我有这个简单的代码,由于某种原因它没有用。
$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行"
答案 0 :(得分:4)
从评论中看到并从另一个答案中看到$movimento
变量没有传递任何内容:
" UPDATE movimenti SET movimenti.id_dentista = 1,movimenti.id_trattamento = 46,movimenti.id_cliente = 3,movimenti.movimenti = 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>';
我们不知道您分配给变量的内容,向我们展示,记住报价