繁体   English   中英

当字符串以数字开头时,mysqli给出错误

[英]mysqli giving an error when string starts with a number

我的php脚本应该可以搜索客户端数据库,并且一切正常,除非数据库中的客户端名称以数字开头(该列的格式为Varchar(255)),否则一切正常。

if(isset($_GET['search'])) {
    $searchVal = "%" . $_GET['search'] . "%";
}

是我抓取它的方式,我认为值得一提,因为网站另一端的自动完成功能可以正常工作,并且它使用$ _POST发送数据(我们想使用$ _GET以便网站访问者可以导航) 。

    $query = "SELECT DISTINCT clients.client_id,
                              clients.logoFileName,
                              clients.clientName,
                              clients.streetAddress,
                              clients.city,
                              clients.state,
                              clients.zip,
                              clients.latitude,
                              clients.longitude

                         FROM clients

                   INNER JOIN clientData

                           ON clients.client_id = clientData.client_id

                        WHERE clients.clientName LIKE ? AND clients.city LIKE ?

                           OR clientData.clientCategory LIKE ? AND clients.city LIKE ?

                           OR clientData.term LIKE ? AND clients.city LIKE ?";

    //setup
    $stmt->prepare($query);
    $stmt->bind_param('ssssss',$searchVal,$cityVal,$searchVal,$cityVal,$searchVal,$cityVal);

因此,此搜索实际上可以在99%的搜索中运行(我们列出了大约1000个客户端,这仅适用于以数字开头的10个客户端)。

因此,如果我要搜索“ UPS商店1​​840”,则可以搜索“ UPS”,“商店”或“ 1840”,它将返回它们。 但是,如果我搜索“ 14根蜡烛”,则“ 14”或“蜡烛”都不会返回任何结果。

如果我在PHPMyAdmin中搜索相同的信息,则会发生相同的结果(编辑:好,它给出了“返回0行”,而不是完全错误)。 但是,就像我说的那样,使用$ _POST进行的查询工作正常,并且使用了完全相同的代码(访问相似的搜索,但是提取的数据更少并且具有LIMIT)。

它绝对是在MYSQL中弹出一个错误,因此它与发送的信息有关,这使我认为通过$ _POST发送的格式与$ _GET不同。

我在做什么错,该如何解决?

好吧,对于任何绊倒这个的人,我想我都发现了错误。 出于任何原因,进行INNER JOIN都会使事情变得混乱。 切换到LEFT JOIN和bam,就像一个魅力。 添加了要访问的更多数据,并且使用INNER从四个表中提取数据,然后使用LEFT LEFT从这两个表中提取数据,因此这与在多个表中使用INNER JOIN有关。 SELECT DISTINCT必须保留,否则我将获得十亿个结果(试图使用该结果为权重搜索添加“相关性”选项)。

另外,我有一个理论认为它与归类为latin1_swedish_ci或类似的排序有关,因此我仔细研究了所有表并将其更改为utf8_unicode_ci。 所以这两件事之一

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM