Php 更新查询失败的次数几乎为1/10
我有一个疑问:Php 更新查询失败的次数几乎为1/10,php,mysql,Php,Mysql,我有一个疑问: $wd=1.5480; $query = "UPDATE books SET myprice= myprice + $wd"; 查询失败的次数几乎是十分之一。我没有发现明显的模式。 我尝试更新的列是一个浮动。该值在0到9.99999之间变化。 我已将错误日志设置为报告查询中的错误,并显示查询本身 我在错误日志中发现了以下错误: Database Error: You have an error in your SQL syntax; check the manual th
$wd=1.5480;
$query = "UPDATE books SET myprice= myprice + $wd";
查询失败的次数几乎是十分之一。我没有发现明显的模式。我尝试更新的列是一个浮动。该值在0到9.99999之间变化。
我已将错误日志设置为报告查询中的错误,并显示查询本身 我在错误日志中发现了以下错误:
Database Error: You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the right syntax to use near '=+1'
at line 1<br/><br/>
Query:UPDATE books SET =+1
数据库错误:您的SQL语法有错误;检查手册
与MySQL服务器版本相对应,以便在“=+1”附近使用正确的语法
在第1行
查询:更新书籍集=+1
如您所见,myprice在查询中丢失。
我做错了什么
提前感谢您的帮助。您错过了myprice变量前面的$infort,这可能是原因您错过了myprice变量前面的$infort,这可能是原因尝试以下方法:
$query = "UPDATE books SET `myprice` = `myprice`+".$wd;
试试这个:
$query = "UPDATE books SET `myprice` = `myprice`+".$wd;
试试这个:
$query = "UPDATE `books` SET `myprice` = `myprice` + $wd";
$query = "UPDATE `books` SET `myprice` = `myprice` + $wd";
试试这个:
$query = "UPDATE `books` SET `myprice` = `myprice` + $wd";
$query = "UPDATE `books` SET `myprice` = `myprice` + $wd";
尝试替换“by”以避免不必要的var解释,并使用sprintf()进行查询构造:
$query = sprintf('UPDATE books SET myprice = myprice + %s', $wd);
尝试替换“by”以避免不必要的var解释,并使用sprintf()进行查询构造:
$query = sprintf('UPDATE books SET myprice = myprice + %s', $wd);
你能试试这个吗
$query = "UPDATE `books` SET `myprice` = `myprice` + $wd";
你能试试这个吗
$query = "UPDATE `books` SET `myprice` = `myprice` + $wd";
试试这个
$wd=1.5480;
$query = "UPDATE books SET `myprice` = `myprice` + {$wd}";
试试这个
$wd=1.5480;
$query = "UPDATE books SET `myprice` = `myprice` + {$wd}";
您确定
myprice
不是一个变量吗?请尝试将myprice
括在反勾中。@explosion在myprice
之前没有美元符号。更多的代码可能会有所帮助。MySQL不只是更新和删除列名。实际上向服务器发出此查询的代码有些古怪;你没有发送我能看到的查询。问题出在$query=
和将查询发送到数据库的实际调用之间。查看该代码会有帮助。你确定myprice
不是一个变量吗?请尝试将myprice
括在后面。@explosion在myprice
之前没有美元符号。更多的代码可能会有所帮助。MySQL不只是更新和删除列名。实际上向服务器发出此查询的代码有些古怪;你没有发送我能看到的查询。问题出在$query=
和将查询发送到数据库的实际调用之间。看到那个密码会有帮助的。为什么要否决投票?Backsticks是保留关键字,而“myprice”不是……我同意;这不值得投反对票。这里不需要背景标记。有些东西正在重新解释查询,这至少消除了一个可能的破坏点。虽然我会把%s
改成%f
或者别的什么,因为它永远不应该是非浮动的……好吧,从技术上讲,它应该是非浮动的,因为当你处理钱的时候,浮动很糟糕。SQLwise,它可能应该是一个十进制
。但是,在这个问题得到解决之前,%f
至少消除了语法错误和SQL注入的可能性。为什么要否决投票?Backsticks是保留关键字,而“myprice”不是……我同意;这不值得投反对票。这里不需要背景标记。有些东西正在重新解释查询,这至少消除了一个可能的破坏点。虽然我会把%s
改成%f
或者别的什么,因为它永远不应该是非浮动的……好吧,从技术上讲,它应该是非浮动的,因为当你处理钱的时候,浮动很糟糕。SQLwise,它可能应该是一个十进制
。但在修复之前,%f
至少消除了语法错误和SQL注入的机会。他没有错过$是因为他想给当前字段名的现有值添加一个值,(myprice)他没有错过$是因为他想给当前字段名的现有值添加一个值,(mypricemyprice
不是保留字。即使是保留字,也不会从查询中删除;MySQL只会抱怨一个意外的关键字或其他东西。@我没有删除它,我告诉查询它是一个字段名,添加它的值将得到php变量值。MySQL已经知道它是一个字段名称,因为这就是SQL中出现的问题。问题是,它甚至从未看到myprice
(错误表明它已被完全删除)。在$query=
和实际执行之间的某个地方,SQL被破坏了。@MIsspoo,谢谢。我已经成功地执行了2000个查询!@Kabamaru:如果这真的解决了你的问题,那么有些事情你没有告诉我们。一个直接的mysqli\u查询或$db->prepare($query)
不会像您描述的那样损坏SQL。Ever.Period。您如何运行查询?myprice
不是保留字。即使是保留字,也不会从查询中删除;MySQL只会抱怨一个意外的关键字或其他东西。@cHao我没有删除它,我告诉查询它是一个字段e,并将其值添加到php变量value中。MySQL可能已经知道它是一个字段名,因为这是SQL中的一个字段名。问题是,它甚至从未看到myprice
(错误表明它已被完全删除)。在$query=
和实际执行之间的某个地方,SQL被破坏了。@MIsspoo,谢谢。我已经成功地执行了2000个查询!@Kabamaru:如果这真的解决了你的问题,那么有些事情你没有告诉我们。一个直接的mysqli\u查询或$db->prepare($query)
不会像您描述的那样损坏SQL。Ever.Period。您是如何运行查询的?很好,尽管倒勾不是必需的。很好,尽管倒勾不是必需的。