トレースできないphp/mysqlエラーでスタックします。私のテーブルuser_like構造はサンプルデータを使用しています
id user_id song_id like
1 1 1 1
2 1 2 0
0は嫌いを表し、1は好きを表します。これで、http://myhost.net/server/services/songlike.php?uid = 1& song_id = 1のようなphpを使用してテーブル にクエリを実行し、次のコードスニペットを使用してクエリの結果も取得しました。
$query="select * from atr_like where user_id='$uid' and song_id='$songid' limit 1 ";
$rs = mysql_query($query);
$row = mysql_fetch_assoc($rs);
print_r($row);
echo "<br>";
$like=$row['like'];
echo $like;
この値を正常に取得しています。私がやっていることは、likeが存在しない場合はnullを意味し、likeをテーブルに挿入することです。それ以外の場合は、更新によってその値を切り替えています。つまり、値が0の場合は1、その逆の場合です。ここでエラーが発生します。私のPHPコードは
if(mysql_num_rows($rs) > 0 && $like!=null)
{
if($like==1)
{
// "user has liked it already so dislike it update like to 0 ";
$query1="update atr_like set like=0 where user_id='$uid' and song_id='$songid'";
}
else
{
//"user has disliked it previously already so update like to 1 ";
$query1="update atr_like set like=1 where user_id='$uid' and song_id='$songid'";
}
}
else
{
echo "first time so insert record . user is going to like";
$query1="insert into atr_like (user_id,song_id,like) values ('$uid','$songid',1)";
}
$rs1 = mysql_query($query1)or die(mysql_error());
mysql_close($conn);
エラーメッセージは次のとおりです。
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'like=1 where user_id='1' and song_id='1375'' at line 1.
以前のクエリのSQL選択に存在するレコードを更新できないのはmysqlの問題が原因ですか?構文は正常に見えますが、それでも構文エラーが表示されます。