php - 为什么我无法获取搜索结果?

标签 php mysql

我有一个简单的搜索栏,可以用来搜索客户的姓名、电话号码、地址、注释或日期。我从我的 customer 表中搜索数据,该表包含以下字段:idnametelno地址注释日期。我的问题是:为什么即使我没有收到任何错误消息,也无法获得搜索结果?

这是我的代码:

if (isset($_POST['search']) && !empty($_POST['search'])){
  $db =new mysqli('localhost', 'root', '1234' , 'trying');
  if($db->connect_errno) die ('Connect Error:' . $db->connect_errno);

  $stmt = $db ->prepare("select * from customer where name or note or date or telno like ?");

  if($stmt === FALSE) die("Query Error". $db ->error);

  $ara ='%'.$_POST['search'].'%';

  $stmt->bind_param("s", $ara);

  $stmt->execute();

  $res =$stmt->get_result();

  if($res -> num_rows <1) die("can't found !");

  while ($row = $res->fetch_array())
  {

    echo $row['name']. '<br/>';
    echo $row['telno']. '<br/>';
    echo $row['note']. '<br/>';
    echo $row['adress']. '<br/>';
    echo $row['date']. '<br/>';
  }
}

最佳答案

您的查询完全错误。您无法像现在这样针对单个参数测试多个值:

 where name or note or date or telno like ?
            ^^      ^^      ^^

这被执行为

where (some value) or (some value) or (some value) or (some value LIKE ?)
where (t/f) or (t/f) or (t/f) or (some value like ?)
where (t/f) or (some value like ?)

您必须对每个值进行 like 测试:

where (name LIKE ?) or (note LIKE ?) or (date LIKE ?) etc...

关于php - 为什么我无法获取搜索结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32997365/

相关文章:

mysql - 选择每个客户的姓名以及他们在 session 中花费的总时间

java - 通过客户端触发 Restful 服务器响应

javascript - 如何通过我的网络服务器创建一个使用 php 作为代理的外部站点 iframe? (避免 CORS)

java - 如何将 Swing 设计与类分离,以便之后代码可以轻松转换为 Android

php - 如何在 PHP 文件中的 SQL 查询中添加 PHP

php - 如何包装正确准备好的语句并使用数组绑定(bind)实现 IN(?) 表达式?

mysql - MySQL 左连接的正确语法

php - 需要 Laravel 移动应用程序的推送服务

php - 如何用PHP函数删除一些单词?

php - 在移动的 WordPress 网站上使用的后备字体系列