我正在重写我的SQL语句,因此他们使用prepare。
我在使用prepare和INSERT INTO的SQL语句时遇到问题。
我的代码看起来像这样。
if ($count > 0)
{
$query = "UPDATE $dbTable SET Distance = %d WHERE Date = %s AND UserID = %d";
$wpdb->query( $wpdb->prepare($query, $formData, $today, $userID ));
}else{
//$query = "INSERT INTO $dbTable ('Distance', 'Date', 'UserID') VALUES (%d,%s,%d)";
//$wpdb->query( $wpdb->prepare($query, $formData, $today, $userID));
$sql = $wpdb->prepare("INSERT INTO $dbTable ('Distance', 'Date', 'UserID') VALUES (%d,%s,%d)",$formData, $today, $userID);
$wpdb->query($sql);
}
UPDATE部分工作正常,但我在INSERT部分得到一个语法错误。 正如您所看到的,我尝试了两种不同的方式来执行该语句,但两者都出现了这个错误:
<div id="error"><p class="wpdberror"><strong>WordPress databasefejl:</strong> [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 ''Distance', 'Date', 'UserID') VALUES (65,'2018-01-11',29)' at line 1]<br /><code>INSERT INTO hfwp_Balance_Arm_Reach ('Distance', 'Date', 'UserID') VALUES (65,'2018-01-11',29)</code></p></div>
我可以从输出中看到表名和值被正确翻译。
我不知道&#39;意味着他们一直在那里,包括旧代码。
语法错误的任何想法??
由于
弗莱明
答案 0 :(得分:3)
请勿使用围绕列名称的单引号。
改变这个:
INSERT INTO $dbTable ('Distance', 'Date', 'UserID') VALUES (%d,%s,%d)
到此:
INSERT INTO $dbTable (Distance, Date, UserID) VALUES (%d,%s,%d)
使用MySQL,您可以根据需要使用返回刻度,如下所示:
INSERT INTO $dbTable (`Distance`, `Date`, `UserID`) VALUES (%d,%s,%d)