给定多个参数的用户的mysql搜索查询

沙西尼

我正在使用 php 开发一个搜索选项。我需要使用用户给定的条件进行搜索,用户可以在用户提供 id、name、status 这三个参数的任意组合时进行搜索。下面是我的代码

    if(isset($_POST['search']))
    {
        echo "<script> document.getElementById('tblsearch').style.display = 'block' </script> "; 

        $serviceNumber=$_POST['serviceNumber'];
        $name=$_POST['name'];
        $pendingfrom=$_POST['pendingfrom'];
        $status=$_POST['status'];
        $datefrom=$_POST['datefrom'];
        $dateto=$_POST['dateto'];
        $searchkey='serviceNumber';




$mysqli = new mysqli("localhost", "root", "", "user_management");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

    $query = 'SELECT * FROM user WHERE ';
    $where = array();
    $values = array();
    $types = '';

    if (!empty($_POST['serviceNumber'])) {
        $where[] = 'serviceNumber = ?';
        $values[] = $_POST['serviceNumber'];
        $types .= 'i';
    }

    if (!empty($_POST['name'])) {
        $where[] = 'Username = ?';
        $values[] = $_POST['name'];
        $types .= 's';
    }

    if (!empty($_POST['status'])) {
        $where[] = 'status = ?';
        $values[] = $_POST['status'];
        $types .= 's';
    }



      $query .= implode(' AND ',$where);
      printf("rows inserted: %d\n", $query);



  printf("rows inserted: %d\n", $values);

/* prepare statement */
if ($stmt = $mysqli->prepare($query)) {

    /* Bind variable for placeholder */

    $stmt->bind_param($types,$values);

    /* execute statement */

    $stmt->execute();
    $res = $stmt->get_result();
    $row = $res->fetch_assoc();

    printf("rows inserted: %d\n", $stmt->num_rows);

    /* close statement */
    $stmt->close();
}

/* close connection */
    $mysqli->close();

下面一行我很困惑,因为 $values 是一个数组。我需要将用户给定的参数传递给它才能执行。

$stmt->bind_param($types,$values);

所以为了得到正确的结果,我需要怎么做。

拉曼

尝试使用以下:

     if(isset($_POST['search']))
      {
      echo "<script> document.getElementById('tblsearch').style.display = 'block' </script> "; 

    $serviceNumber=$_POST['serviceNumber'];
    $name=$_POST['name'];
    $pendingfrom=$_POST['pendingfrom'];
    $status=$_POST['status'];
    $datefrom=$_POST['datefrom'];
    $dateto=$_POST['dateto'];
    $searchkey='serviceNumber';




$mysqli = new mysqli("localhost", "root", "", "user_management");

/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}

$query = 'SELECT * FROM user WHERE ';

if (!empty($_POST['serviceNumber'])) {
   $query .="serviceNumber='$searchkey'  ";

}

if (!empty($_POST['name'])) {
          $query .="and Username='$name'  ";

}

if (!empty($_POST['status'])) {
    $where[] = 'status = ?';
    $values[] = $_POST['status'];
          $query .=" and status='$status' ";
}




/* prepare statement */
if ($stmt = $mysqli->prepare($query)) {

/* Bind variable for placeholder */

$stmt->bind_param($types,$values);

/* execute statement */

$stmt->execute();
$res = $stmt->get_result();
$row = $res->fetch_assoc();

printf("rows inserted: %d\n", $stmt->num_rows);

/* close statement */
$stmt->close();
}

     /* close connection */
$mysqli->close(); 

希望这可以帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

CakePHP:Mysql在多个列上搜索多个查询

来自分类Dev

MySQL“IN”查询中的多个参数

来自分类Dev

从多个字段中搜索查询MySQL

来自分类Dev

我将如何搜索查询多个关联的用户?

来自分类Dev

如何在单个查询中搜索多个用户名

来自分类Dev

我将如何搜索查询多个关联的用户?

来自分类Dev

如何在单个查询中搜索多个用户名

来自分类Dev

SQL用户搜索查询

来自分类Dev

mySQL 搜索查询以从多行中获取用户 ID

来自分类Dev

mysql查询比较max值和给定参数,如果max等于给定值,则返回0或1

来自分类Dev

MySQL / PHP精炼联接查询,用于搜索多个表

来自分类Dev

MySQL查询来自多个表的搜索过滤器

来自分类Dev

MySQL查询来自多个表的搜索过滤器

来自分类Dev

从多个字段搜索查询MySQL中的SQL LIKE子句

来自分类Dev

查询以在HTML文本字段中搜索多个表的多个用户输入

来自分类Dev

未填充所有给定参数时为用户查询数据库

来自分类Dev

如何在给定多个用户名的情况下查询Active Directory?

来自分类Dev

DJango-Python中MySQL raw()查询中的多个参数

来自分类Dev

Python/PonyORM/MySQL - 使用多个 URL 参数查询

来自分类Dev

用户好友的 Laravel 搜索查询

来自分类Dev

优化MySQL搜索查询

来自分类Dev

PHP搜索查询MYSQL

来自分类Dev

从python搜索mysql查询

来自分类Dev

加快Mysql查询搜索

来自分类Dev

Mendeley按查询参数搜索

来自分类Dev

参数化全文搜索查询

来自分类Dev

搜索多个MySQL表

来自分类Dev

为什么在Rails中的搜索查询会出现错误“参数数量错误(给定1,预期为0)”?

来自分类Dev

Linq搜索查询多个表