2011-08-09 39 views
0

想知道如果有人能帮助 - 我敢肯定,这是以前的工作,但我不能让一个MySQL更新工作变量嵌入到MySQL

$db->query("UPDATE entry_pending_details SET old_value = '{$value ["old_value"]}' WHERE id = '{$value ["id"]}'"); 

它显然无法被识别为当我变数放下硬编码的值就可以了。

任何想法?

感谢

+0

那么在它坏了之前你有什么改变? – ain

回答

2

您必须使用单引号'或绕数组索引(如\")转义双引号。我用单引号替换双引号

"UPDATE entry_pending_details SET old_value = '{$value['old_value']}' WHERE id = '{$value['id']}'" 
+0

试过了。数组var中的'''var不会“破坏”5.3.2上的字符串。 –

+0

嗯,真的?没有意识到这一点,现在无法测试......无论如何,OP不会不提他使用的是什么版本,或许它是早期的版本,但它不支持它?但Dan的使用参数的答案是要走向IMO的方式 – ain

+0

不知道它何时会发生变化。注意var名称中的引号和空格,但是(虽然很奇怪)在5.3.2上工作。 –

3

你的问题可能是:

  1. 你有一个双引号字符串中双引号。这甚至不应该运行,这是一个语法错误。

  2. 变量名和括号之间的空格。

您可能容易受到SQL注入攻击,并且肯定容易受到自己的逻辑错误的影响。

改为使用绑定参数。

$st = $db->prepare("UPDATE entry_pending_details SET old_value = ? WHERE id = ?"); 
$st->execute(array($value['old_value'], $value['id'])); 
+0

我认为这也是空间,但在我的5.3.2上,{}'表示法符合空格。例如'echo {$ x ['a']}'和'echo {$ x ['a']}'都可以在$ x ['a'] ='yo''上正常工作,并给我'哟' (意外。 –

-2

尝试以下操作:

$sql = "UPDATE entry_pending_details SET old_value = '{$value ["old_value"]}' WHERE id = '{$value ["id"]}'"; 
mysql_query($sql) or die(mysql_error()); 
echo $sql; 

它把查询到一个变量以便以后可以检查它是否需要是一个好主意。

以及var_dump($values)显示什么?

0

我想要做的就是事先将值设置为变量。例如

$old_value = $value['old_value']; 
$id = $value['id']; 
mysql_query("UPDATE entry_pending_details SET old_value = '$old_value' WHERE id = '$id'");