首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用LIKE运算符与混合数据类型比较php变量

问使用LIKE运算符与混合数据类型比较php变量
EN

Stack Overflow用户
提问于 2016-04-09 01:15:15
回答 2查看 51关注 0票数 0

我想能够搜索使用名称,电话号码,客户,电子邮件等所有在同一个搜索字段。但是有些列是INT列,有些列是VARCHAR列,我得到了一个语法错误,我不知道为什么。我试着使用CAST来解决这个问题,但我仍然会遇到错误。

代码语言:javascript
复制
$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%’‘附近使用的正确语法。

表

代码语言:javascript
复制
CREATE TABLE customers (
    custid int(6),
    firstname varchar(20),
    lastname varchar(20),
    primaryphone int(20),
    secondaryphone int(20),
    email varchar(40),
);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-09 03:23:24

根据MySQL文档,您只能将其转换为:

二元(N) 夏尔(北) 日期 日期时间 十进制[(M,D)] 有符号整数 时间 无符号整数

因此,如果您真的需要将您的int转换成某种东西,请使用CHAR或CHAR(20)。

票数 0
EN

Stack Overflow用户

发布于 2016-04-09 01:25:50

您需要创建另一个变量并将其添加到转储中,同时它将搜索int类型的列,同时$search检查这些varchar列。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36511637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档