我希望能夠在同一個搜索字段中使用姓名,電話號碼,客戶,電子郵件等進行搜索。但是有些列是INT,有些是VARCHAR,我得到一個語法錯誤,我不知道爲什麼。我嘗試使用CAST來解決問題,但我仍然收到錯誤。使用LIKE sql操作符與混合數據類型比較php變量
PHP
$search = $_POST['search'];
var_dump($search);
try {
$sql = "SELECT * FROM customers WHERE CAST(custid as VARCHAR) LIKE '%$search%' OR firstname LIKE '%$search%' OR lastname LIKE '%$search%' OR CAST(primaryphone as VARCHAR) LIKE '%'$search%'' OR CAST(secondaryphone as VARCHAR) LIKE '%$search%' OR email LIKE '%$search%'";
$statement = $this->con->prepare($sql);
$statement->execute();
} catch(PDOException $Exception) {
echo "Error: " . $Exception;
die();
}
錯誤
語法錯誤或訪問衝突:1064您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以找到在'1'處使用'VARCHAR'LIKE'%George%'或名字LIKE'%George%'或姓氏LIKE'%George%'使用的正確語法
表
CREATE TABLE customers (
custid int(6),
firstname varchar(20),
lastname varchar(20),
primaryphone int(20),
secondaryphone int(20),
email varchar(40),
);
我認爲首先你必須用OR來代替「||」 –
我將它們更改爲OR,但仍然收到相同的錯誤消息。還有其他建議嗎? – David
我不確定,但也許你需要提供字段長度。 'CAST(custid as VARCHAR(12))' –