当前位置: 首页 > 知识库问答 >
问题:

MySQL更新查询PHP不工作

莫翰藻
2023-03-14

我试图更新一个列,我没有修改列值,你能帮我吗?

我正在尝试的代码:-

global $wpdb;
$param1 = $_GET['projectID'];
$sql1 = "UPDATE wp_projects SET nbrDonation = nbrDonation+1 WHERE projectID = $param1";
$wpdb->query($sql1);
echo $param1;
echo $sql1;

这就是我得到的错误:

Erreur de la base de données WordPress : [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 '' at line 1] UPDATE wp_projects SET nbrDonation=nbrDonation+1 WHERE projectID=

UPDATE wp_projects SET nbrDonation=nbrDonation+1 WHERE projectID=

共有2个答案

慕容弘懿
2023-03-14

删除你的项目ID的单引号

$sql1="UPDATE wp_projects SET nbrDonation=(nbrDonation+1) WHERE projectID=$param1";

现在试试。

贺飞星
2023-03-14

看起来你的$Param1值可能是空的,或者是无效的。

[您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以获取第1行中靠近“”的正确语法]

表示该值为空;因此,SQL正在做:

UPDATE wp_projects SET nbrDonation=(nbrDonation+1) WHERE projectID=''

无效,因为nothing(“”)不是预期的整数值。

您需要强制将$param1值设置为整数。您可以通过在PHP中进行类型转换来实现这一点。

因此:

$param1 = (int)$_GET['projectID']; // forces it to a numeric value, 1 or 0

这意味着SQL将正常工作:

$sql1 = "UPDATE wp_projects SET nbrDonation = nbrDonation+1 WHERE projectID = $param1";

您不需要在1周围加括号,也不需要在ID号周围加引号,因为它是数字。

另请注意:

 类似资料:
  • 问题内容: 谁能帮助我了解为什么此更新查询未更新数据库中的字段?我在我的php页面中有这个来从数据库中检索当前值: 这是我的HTML表单: 这是我的“ editblogscript”: 我不明白为什么它不起作用。 问题答案: 您必须在查询中的所有VARCHAR内容周围加上单引号。因此,您的更新查询应为: 同样,用POST中的内容直接更新数据库是一种不好的形式。您应该使用mysql_real_esc

  • 我正在使用MySql工作台执行查询。 但它没有更新行,并显示以下错误: 您正在使用安全更新模式,并且试图更新一个没有使用键列禁用安全模式的WHERE的表,请在Preferences->SQL Editor中切换该选项并重新连接。

  • 我已经按照它的教程,我想用两个php文件更新我的数据库。 这是我使用的第一个php文件作为update.php: 但是$sql行并不像它所说的那样工作 未定义索引:Cname和其他索引。

  • 问题内容: 谁能看到以下查询出了什么问题? 当我运行它时,我得到: #1064-您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第8行的’a where a.CompetitionID = Competition.CompetitionID’附近使用 问题答案: 主要问题是内部查询不能与外部语句上的子句相关,因为在内部子查询执行之前,where过滤器首先应用于要

  • 我需要更新我的数据库,它是基于locationId的多行软删除 当我运行查询时,我得到一个错误: 错误代码:1175。您使用的是安全更新模式,并且您试图更新一个没有使用键列禁用安全模式的表,请在“首选项”中切换该选项- 正如我所知,子查询将返回两条记录,因为子查询返回两条记录更新不会发生,但我如何解决这个问题。我试图解决这个问题,但没有成功。

  • 我一直在尝试从1000行的表中获取100到200行作为示例。我在网上找到了这个代码片段,它在PHPMyAdmin中似乎工作得很好,但当我试图在代码中使用它时,它就不起作用了。 这是我的PHP代码 当我尝试执行$query=mysql\u query($q)或死亡(mysql\u error())时,我什么也得不到。 任何对此的帮助都是非常感激的 编辑:使用限制100100解决。谢谢各位