PHP不插入SQL列

PHP不插入SQL列,php,mysql,ajax,Php,Mysql,Ajax,我使用Ajax来收集数据,比如winningReddit、LosingReddit和win-and-Loss照片。然后,PHP脚本(如下)应该将其发送到MySQL表。“赢”和“输”列每次应增加1 但由于某些原因,此脚本未保存到数据库。我做错了什么?我错过什么了吗 <?php if(isset ($_POST['action'])) { include( 'connection.php'); $winnerLink = $_POST['winnerReddit']; $loserLink

我使用Ajax来收集数据,比如winningReddit、LosingReddit和win-and-Loss照片。然后,PHP脚本(如下)应该将其发送到MySQL表。“赢”和“输”列每次应增加1

但由于某些原因,此脚本未保存到数据库。我做错了什么?我错过什么了吗

<?php
if(isset ($_POST['action'])) {

include( 'connection.php');

$winnerLink = $_POST['winnerReddit'];
$loserLink = $_POST['losingReddit'];
$win = $_POST['win'];
$lose = $_POST['lose'];


mysql_query("UPDATE $winnerLink SET win = win + 1 WHERE imagelink = '$win'");
mysql_query("UPDATE $loserLink SET lose = lose + 1 WHERE imagelink = '$lose'");

}

?>
替换这个

mysql_query("UPDATE $winnerLink SET win = win + 1 WHERE imagelink = $win");
mysql_query("UPDATE $loserLink SET lose = lose + 1 WHERE imagelink = $lose");
在这份准备好的声明中:

$stmt = mysqli_prepare("UPDATE ? SET win = win + 1 WHERE imagelink = ?");
$stmt->bind_param("ss", $_POST['winnerReddit'], $_POST['win']);
$stmt->execute();
$stmt->close();

$stmt = mysqli_prepare("UPDATE ? SET lose = lose + 1 WHERE imagelink = ?");
$stmt->bind_param("ss", $_POST['losingReddit'], $_POST['lose']);
$stmt->execute();
$stmt->close();

您还需要确保您有。

尝试输出SQL以确保它看起来像您认为的那样-可能会将它们保存到日志文件中?您应该在SQL中的$win和$lose周围加引号,而且您还应该真正使用准备好的语句来防止SQL注入您可能需要在值:
“其中imagelink='$win'”
使用
mysql\u error()检查错误
请不要使用
mysql.*
函数来编写新代码。它们不再被维护,社区已经开始。请参阅?相反,您应该了解并使用或。如果您不能决定使用哪一个,将对您有所帮助。如果您选择PDO,我不会在查询中使用
$winnerLink
,而不首先转义它。问题是什么这一行的输出:echo“(“$mysqli->connect_errno.”“)”“$mysqli->connect_error?我已经很久没有使用PHP了。一秒钟,更新答案。我正在尝试跟踪您看到的内容,第27行是什么?啊,我更新了我的答案(正如Rocket指出的那样,我混合了PDO和mysqli)
$stmt = mysqli_prepare("UPDATE ? SET win = win + 1 WHERE imagelink = ?");
$stmt->bind_param("ss", $_POST['winnerReddit'], $_POST['win']);
$stmt->execute();
$stmt->close();

$stmt = mysqli_prepare("UPDATE ? SET lose = lose + 1 WHERE imagelink = ?");
$stmt->bind_param("ss", $_POST['losingReddit'], $_POST['lose']);
$stmt->execute();
$stmt->close();