2014-10-29 124 views
0

我一直在尝试使用特定查询将数据添加到表中。在PHPMyAdmin我一直在使用:SQL查询不能在PHP中工作,但在SQL中工作

UPDATE member_food SET food_id ='5' WHERE member_id='5' AND food_type='breakfast' 

这个工程,但是当我尝试在PHP中实现它。它改变了food_id为1

enter image description here

这是我的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; 
} 

这里是我的结果时,我赞同查询:

Query: UPDATE member_food SET food_id ='8' WHERE member_id='5' AND food_type='breakfast'

确认一下,我可以发送数据到表,如果我没有与部分,它的工作。所以这个工程:

Query: UPDATE member_food SET food_id ='8' WHERE member_id='5'

我该如何调试这种情况?解决这个问题的最好方法是什么?

+0

有什么错误 - 消息? – 2014-10-29 12:09:53

+1

转储'$ breakfast1',看看里面有什么? – 2014-10-29 12:09:57

+0

@ 92_egdeH我发布了。没有错误。它认为它发布了正确的值,而是将food_id更改为1. – 2014-10-29 12:11:15

回答

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() 
+0

>好吧,我只是点击它的字符串整数字符串...然而我得到这个错误:致命错误:不能通过引用传递参数4。 这是我的整个页面,incase我失去了一些东西:http://pastebin.com/DacKi9yh – 2014-10-29 13:33:57

+0

@BradlySpicer现在尝试 – 2014-10-29 17:19:51

1

尝试:

$sql_breakfast1 = "UPDATE member_food SET food_id ="'.$breakfast1.'" WHERE member_id="'.$id.'" AND food_type="'breakfast'""; 

播放使用单引号,可以尝试每个变量和breakfast逐个删除它们。