我以爲我會添加類似於以下到PHP一份聲明在MySQL中運行的第一行的條款:爲什麼在準備好的陳述中計算的「like」子句需要括號?
$sql .= " where ? like '%'+name+'%' ";
if ($stmt = mysqli_prepare($con, $sql)) {
//irrelevant code omitted here.
} else {
echo("Error description: " . mysqli_error($con));
}
其中名稱是在表中的列?是要綁定的參數。如果我用「弗雷德」取代?
和MySQL的工作臺它將運行運行
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 '+name+'%' at line 1
:
我得到這個錯誤。同樣它的工作原理,如果我只是刪除級聯,以便它開始$sql .= " where ? like name ";
但是,如果我只是改變它像這樣:
? like ('%'+name+'%')
然後它運行。有人知道爲什麼請嗎?我問,因爲我覺得這裏有些東西需要理解,我沒有明白。特別是我想知道在使用預準備語句時是否還有其他場景需要添加任意圓括號?
而且,閱讀'LIKE' http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html#operator_like - 你不應該有'+'標誌。 – 2014-10-04 20:40:04