2011-02-01 24 views
1

私は2つの変数に1文字の文字列を含んでいます。私はテーブルでそれらを更新する必要がありますが、私が試した約5つの異なるスクリプトの20 +さまざまなバリエーションのうち、それは更新されません!MySQL + PHPで複数の変数を使って更新する

私はこれを使用して更新することができます。

mysql_query("UPDATE cart SET quantity = $q WHERE sessionid='" .session_id(). "' AND description = '$d'") or die(mysql_error()); 

が、を、私は今、私は少し異なる更新クエリを必要とする別のページ、に取り組んでいます。これは次のとおりです。

UPDATE cart SET quantity = $q WHERE sessionid = $somethin AND description = $desc 

そして、そのために私が持っている:

mysql_query("UPDATE cart SET quantity = $q WHERE sessionid = $o AND description = $d") or die(mysql_error()); 

(私は上記のクエリのために異なる場所で異なる引用符で多くのバリエーションを試してみましたが、何も動作!)

私はまた試みました:

$conn = mysql_connect("my01..com", "dbase", "2354ret345ert"); 
if(! $conn) 
{ 
    die('Could not connect: ' . mysql_error()); 
} 
$sql = 'UPDATE cart 
     SET quantity="'.$q.'" 
     WHERE sessionid="$o" AND description = "$d"'; 

mysql_select_db('mysql_94569_dbase'); 
$retval = mysql_query($sql, $conn); 
if(! $retval) 
{ 
    die('Could not update data: ' . mysql_error()); 
} 
echo "Updated data successfully\n"; 
mysql_close($conn); 

最後の1つはエラーを表示しない、実際には、それは正常に更新されました!しかし、それは横たわっている。それは何も更新していない。

私がここで助けてもらえますか?私はturorialの後でチュートリアルを読んでいて、何も学んでいないのは本当にうんざりしています。

私は何をしたいのです:

mysql_query("UPDATE cart 
       SET quantity = '".$q."' 
       WHERE sessionid = '".$o."' AND description = '".$d."'"); 
+3

はエコー$ sqlをしてみてください。だから我々はur SQLの入力を見ることができます...(多分問題はそのクエリではなく、$ d、$ o ...などのようなvarsにあります) – Ratinho

+0

ありがとう、ここにあります:**更新されたデータは正常に更新カートのSET数= "4545455" WHERE sessionid = "$ o" AND description = "$ d" 1 x 19 x 32ワイヤーロープ1ロールステンレスGR316ユニット価格4545455 **それでもまだ更新されませんでした。そして、そのすべてが混乱しています。* 4545455 *は数量であり、最後にはありません。 –

+0

@Lucifer、エコーされたものには '' $ o "'と '' $ d "'があります。これは、変数$ oが正しく設定されていないことを意味します。そのため、クエリが失敗しています。 – shamittomar

答えて

5

ありがとうございましたあなたは混乱を避けて、文字列に変数を直接書き込むのではなく、連結演算子(例えば 'UPDATE'。$ table。 'SET ...')を使うことをお勧めします(例えば "UPDATE $ table SET ...")。 この場合には、あなたのクエリは次のようになります。これは、引用符や括弧の問題を見つけるためにあなたを助けるかもしれない

mysql_query("UPDATE cart SET quantity = ".$q." WHERE sessionid='" .session_id(). "' AND description = '".$d."'") or die(mysql_error()); 

迅速

+0

申し訳ありませんが、私もそれを試しました。エラーや何もない、ただ更新しない。私はあなたのコードを貼り付けて、もう一度試しました。まだ行きません。 :S –

0

ために:

UPDATE table SET columnname = $this WHERE thiscolumn = $this AND thiscolumn = $that 

$this = $var 

はこのようにそれを行う、あなたが説明し、セッションIDでの引用符が欠落している

+0

これはすでに私が働いていたものです。私が質問で言ったように、私はもうsession_id()を必要としません。私はもう1つの問題を抱えています:$ o –

+0

よく、session_id()を$ oに変更してください。この答えのポイントは、文字列のかっこで問題がある場合は、連結を使用する必要があると言いました。 – Ivan

0

BAD: 私はPHPでこのクエリを持っていた:

$query = "UPDATE users SET username = ".$nume." WHERE id = ".$userID; 

それはこのSQLを行った:

UPDATE users SET username = elev WHERE id = 2 

良い:それのために仕事に私はこのPHPにそれを変更:

このSQLをした
$query = "UPDATE users SET username = ".'"'.$nume.'"'." WHERE id = ".$userID; 

UPDATE users SET username = "elev" WHERE id = 2 
+1

文字列を連結して値を入れないでください。プレースホルダ(?)とバインド変数を使用して、SQLインジェクションを防止します。信頼できる変数でさえ。それは良い習慣です。 – kratenko

関連する問題