0

私は2つのテーブルを持っています.1つのテーブルでは、特定の行のカウンターを増やし、もう1つのテーブルに挿入したいと考えています。私はphpとMySQLを使用しており、エンジンはInnoDBです。

これが私のコードです:

function incrementCommentCounter ($id,$photoId,$text,$date) {
$query1= "UPDATE photos SET comments=comments+1 WHERE IdPhoto=$photoId";
//$query2= "INSERT INTO allComments (IdPhoto,IdUser,comment,date) VALUES ('%s',1,'%s',%s)";

//check if a user ID is passed
//if (!$id) errorJson('Authorization required');

mysql_query("START TRANSACTION");

$result1=mysql_query($query1);
$result2=mysql_query("INSERT INTO allComments (IdPhoto,IdUser,comment,dates) VALUES ('%s',1,'%s','%s')",$photoId,$text,$date);

if (!$result1 || !$result2) {
    mysql_query("ROLLBACK");
    errorJson($result2['error']);
} else {
    mysql_query("COMMIT");
    print json_encode(array('successful'=>1));
}

}

私は何を間違っていますか?

ありがとう。

編集:

いくつかのタイプミスを修正しました。2 番目のクエリは正しく実行されないため、いずれも実行されません。しかし、2 番目のクエリの何が問題なのですか?

4

1 に答える 1

0

ネイティブ PHP 関数mysql_errorは、クエリで発生する可能性のある構文エラー (およびその他の問題) に関する貴重なヒントを提供する場合があります
http://php.net/manual/fr/function.mysql-error.php

また、古い mysql 拡張機能は PHP 5.5.0 で非推奨になったため、mysqli または pdo_mysql の使用を検討してください。

2 番目のクエリで、sprintf のような文字列置換関数を使用したかったのではないでしょうか?

$query = sprintf("INSERT INTO allComments (IdPhoto,IdUser,comment,dates) VALUES ('%s',1,'%s','%s')", $photoId, $text, $date);
$result = mysql_query($query);
于 2013-09-28T18:41:17.463 に答える