0

我有 2 个表,其中一个我想在特定行中增加一个计数器,同时在另一个表中进行插入。我正在使用 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));
}

}

我究竟做错了什么?

谢谢。

编辑:

修正了一些错别字。现在第二个查询永远不会正确执行,因此它们都没有被执行。但是第二个查询有什么问题?

4

1 回答 1

0

本机 PHP 函数mysql_error可能会为您提供有关查询中可能出现的语法错误(和其他类型的问题)
http://php.net/manual/fr/function.mysql-error.php的宝贵提示

此外,请考虑使用 mysqli 或 pdo_mysql,因为旧的 mysql 扩展自 PHP 5.5.0 起已弃用。

在您的第二个查询中,也许您想使用像 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 回答