我一直在尝试使用特定查询将数据添加到表中。在PHPMyAdmin中,我一直在使用:
UPDATE member_food SET food_id ='5' WHERE member_id='5' AND food_type='breakfast'
这很有效,但是当我尝试在PHP中实现它时。它将food_id更改为1。
这是我的PHP代码:
$sql_breakfast1 = "UPDATE member_food SET food_id ='$breakfast1' WHERE member_id='$id' AND food_type='breakfast'";
if ($mysqli->query($sql_breakfast1) === TRUE) {
echo "Query: " . $sql_breakfast1;
} else {
echo "Query: " . $sql_breakfast1 . "<br> Error: " . $mysqli->error;
}
当我回显查询时,这是我的结果:
查询:UPDATE member_food SET food_id =&#39; 8&#39;在哪里member_id =&#39; 5&#39;和 food_type =&#39;早餐&#39;
为了确认我可以将数据发送到表中,如果我在没有AND部分的情况下执行此操作,则可以正常工作。所以这有效:
查询:UPDATE member_food SET food_id =&#39; 8&#39;在哪里member_id =&#39; 5&#39;
如何调试这种情况?解决这个问题的最佳方法是什么?
答案 0 :(得分:2)
不要在查询中直接使用php变量。 准备和绑定变量。
另请参阅服务器错误日志或在开发模式下设置错误信息,以便您直接在浏览器中看到任何通知或错误。
更新
不要在绑定参数中使用字符串。
尝试这样:
$sql_breakfast1 = "UPDATE member_food SET food_id =? WHERE member_id=? AND food_type=?";
stmt = $mysqli->prepare($sql_breakfast1);
if ( false===$stmt ) {
die($mysqli->error);
}
$sis = 'sis';
$strBreakFast = 'breakfast';
$rc = $stmt->bind_param($sis, $breakfast1, $id, $strBreakFast);
if ( false===$rc ) {
die($stmt->error);
}
$rc = $stmt->execute();
if ( false===$rc ) {
die($stmt->error);
}
$stmt->close()
答案 1 :(得分:1)
尝试:
$sql_breakfast1 = "UPDATE member_food SET food_id ="'.$breakfast1.'" WHERE member_id="'.$id.'" AND food_type="'breakfast'"";
使用单引号播放,尝试逐个删除每个变量,然后逐个breakfast
。