MySQL UPDATE查询语法错误

时间:2015-08-04 10:35:59

标签: php mysql

我有这个简单的代码,由于某种原因它没有用。

$query_2 = mysql_query("UPDATE movimenti
                        SET
                        movimenti.id_dentista = $hidden_id_dottore,
                        movimenti.id_trattamento = $hidden_id_tratt,
                        movimenti.id_cliente = $hidden_id_paz,
                        movimenti.movimenti = $movimento
                        WHERE movimenti.id = $id")
                        or die(mysql_error());

这是关于查询的错误:

"您的SQL语法出错了;查看与MySQL服务器版本对应的手册  正确的语法使用附近' WHERE movimenti.id =' 79''在第7行"

2 个答案:

答案 0 :(得分:4)

从评论中看到并从另一个答案中看到$movimento变量没有传递任何内容:

  

" UPDATE movimenti SET movimenti.id_dentista = 1,movimenti.id_trattamento = 46,movimenti.id_cliente = 3,movimenti.movi​​menti = WHERE movimenti.id =' .55。&#39 ;好的变量是空的..现在我有线索..谢谢"

所以很清楚; $movimento变量为空/未在某处设置,您需要找出原因。

旁注:WHERE movimenti.id = '.$id.'";没有使用它,没有必要;像在原始查询WHERE movimenti.id = $id中一样删除引号。

在查询之前使用三元运算符赋值。

  • 请仔细阅读以下内容。

由于我们不知道这些变量被分配为或从何处被拉出(您已被问过几次但没有告诉我们,或更新了您的问题),我提交以下内容答案。

<?php 

error_reporting(E_ALL);  
ini_set('display_errors', 1);

$movimento = "fetched value"; // this is unknown. Replace with actual.
$movimento = !empty($movimento) ? $movimento : 'The variable/value is empty, using default value';

...
// rest of your code/query

旁注:显然,&#34;变量/值为空,使用默认值&#34;这只是一个例子,为了让我向你展示这个文本可以被一个默认值替换,在你的情况下它将是十进制值,而不是一个字符串;这会抛出语法错误。同样,这只是三元运算符如何工作的一个例子。您可以将默认值保留为空。

$movimento = !empty($movimento) ? $movimento : '';

有关三元运算符的更多信息,请点击此处:

如果您说$movimento是小数,那么您的查询就可以了。 如果但该变量或任何变量是字符串,则需要引用这些变量。即查询中的'$var'

现在,如果movimenti.movimenti = $movimento仍然导致问题,您也可以尝试引用它movimenti.movimenti = '$movimento',但说实话,这可能没什么区别,这只是一个建议。

error reporting添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:只应在暂存时进行显示错误,而不是生产。

您应该习惯使用预准备语句,并且不推荐使用mysql_函数,并且将从未来的PHP版本中删除。

答案 1 :(得分:1)

所以尝试调试你的变量

$sql = "UPDATE movimenti
        SET
        movimenti.id_dentista = $hidden_id_dottore,
        movimenti.id_trattamento = $hidden_id_tratt,
        movimenti.id_cliente = $hidden_id_paz,
        movimenti.movimenti = $movimento
        WHERE movimenti.id = '.$id.'";
echo '<pre>'.$sql.'</pre>';

我们不知道您分配给变量的内容,向我们展示,记住报价