我正在尝试更新列,列值没有修改,你能帮我吗?
我正在尝试的代码:-
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=
似乎您的$param1
值可能为空,或者无效。
[您的 SQL 语法有误;请查看与您的 MySQL 服务器版本对应的手册,了解在第 1 行的 '' 附近使用的正确语法]
''
意味着该值为空;因此SQL正在执行:
UPDATE wp_projects SET nbrDonation=(nbrDonation+1) WHERE projectID=''
这是无效的,因为没有任何东西(''
(不是预期的整数值。
溶液:
您需要强制$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";
您不需要nbrDonation+1
两边的括号,也不需要 ID 号两边的引号,因为它是数字。
另请注意:
如何使用PHP防止MySQL中的SQL注入妥协
删除项目ID的单引号
$sql1="UPDATE wp_projects SET nbrDonation=(nbrDonation+1) WHERE projectID=$param1";
现在就试试。