我想能够搜索使用名称,电话号码,客户,电子邮件等所有在同一个搜索字段。但是有些列是INT列,有些列是VARCHAR列,我得到了一个语法错误,我不知道为什么。我试着使用CAST来解决这个问题,但我仍然会遇到错误。
$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服务器版本对应的手册,以获得在“%George%”或'%George%‘或'%George%’‘附近使用的正确语法。
表
CREATE TABLE customers (
custid int(6),
firstname varchar(20),
lastname varchar(20),
primaryphone int(20),
secondaryphone int(20),
email varchar(40),
);发布于 2016-04-09 03:23:24
根据MySQL文档,您只能将其转换为:
二元(N) 夏尔(北) 日期 日期时间 十进制[(M,D)] 有符号整数 时间 无符号整数
因此,如果您真的需要将您的int转换成某种东西,请使用CHAR或CHAR(20)。
发布于 2016-04-09 01:25:50
您需要创建另一个变量并将其添加到转储中,同时它将搜索int类型的列,同时$search检查这些varchar列。
https://stackoverflow.com/questions/36511637
复制相似问题