正确的wpdb准备插入语句的语法

时间:2018-01-11 17:39:42

标签: sql wordpress

我正在重写我的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 &#039;&#039;Distance&#039;, &#039;Date&#039;, &#039;UserID&#039;) VALUES (65,&#039;2018-01-11&#039;,29)&#039; at line 1]<br /><code>INSERT INTO hfwp_Balance_Arm_Reach (&#039;Distance&#039;, &#039;Date&#039;, &#039;UserID&#039;) VALUES (65,&#039;2018-01-11&#039;,29)</code></p></div>

我可以从输出中看到表名和值被正确翻译。

我不知道&#39;意味着他们一直在那里,包括旧代码。

语法错误的任何想法??

由于

弗莱明

1 个答案:

答案 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)