PHP搜索有多个下拉框

时间:2013-12-27 11:46:46

标签: php mysql search dropdownbox

我正在制作一个带有多个下拉框的搜索框。 这是主页:

<div id="wrapper">
    <form action="search2.php" method="post">
        <select name="user">
            <option value="" selected="selected">All Users</option>
            <option value="tom">tom</option>
            <option value="bob">bob</option>
        </select>
        <select name="city">
            <option value="" selected="selected">All cities</option>
            <option value="NY">NY</option>
            <option value="NA">LA</option>
        </select>
    <input type="submit" value="search" />
    </form>
</div>

这是search2.php

<?php
include('includes/db_AF.php'); //includes the db credentials
$connection = @new mysqli(HOSTNAME, MYSQLUSER, MYSQLPASS, MYSQLDB);


$whereClauses = array(); 
if (! empty($_POST['user'])) $whereClauses[] ="user='".mysqli_real_escape_string($_POST['user'])."'"; 
if (! empty($_POST['city'])) $whereClauses[] ="city='".mysqli_real_escape_string($_POST['city'])."'"; 
$where = ''; 
if (count($whereClauses) > 0) { $where = ' WHERE '.implode(' AND ',$whereClauses); }

$sql = mysqli_query("SELECT * FROM profile " .$where." ORDER BY user "); 

$result=mysqli_query($sql);
or die("Error: ".mysql_error()."<br />Query: ".$sql);

while ($row = mysqli_fetch_assoc($result)) {
echo $row['user'];
echo $row['city'];
} 
?>

我收到错误消息:

  • mysqli_real_escape_string()需要2个参数,1个给定

  • mysqli_query()需要至少2个参数,1给定

我做错了什么?

2 个答案:

答案 0 :(得分:0)

在建立连接时使用面向对象的样式,因此必须使用对象方法,而不是程序函数。

$connection->real_escape_string($connection, $_POST['user'])
// (...)
$connection->query($sql)

否则,如果要保留过程样式,则应在添加连接到函数的链接时更改连接到数据库的方式:

$connection = mysqli_connect(HOSTNAME, MYSQLUSER, MYSQLPASS, MYSQLDB);
// (...)
mysqli_real_escape_string($connection, $_POST['user'])
mysqli_query($connection, $sql)

答案 1 :(得分:0)

请尝试此代码,将mysqli_query($ sql)更改为mysqli_query($ connection,$ sql)并将$ connection添加到某个部分。还删除了一些不需要的代码请比较一下。

  include('includes/db_AF.php'); //includes the db credentials
  $connection = @new mysqli(HOSTNAME, MYSQLUSER, MYSQLPASS, MYSQLDB);

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

  $whereClauses = array(); 
  if (! empty($_POST['user'])) $whereClauses[] ="user='".mysqli_real_escape_string($connection,$_POST['user'])."'"; 
  if (! empty($_POST['city'])) $whereClauses[] ="city='".mysqli_real_escape_string($connection,$_POST['city'])."'"; 
  $where = ''; 
  if (count($whereClauses) > 0) { $where = ' WHERE '.implode(' AND ',$whereClauses); }


  $sql = "SELECT * FROM profile " .$where." ORDER BY user "; 

  $result=mysqli_query($connection,$sql) or die("Error: ".mysqli_error()."<br />Query: ".$sql);

  while ($row = mysqli_fetch_assoc($result)) {
      echo $row['user'];
      echo $row['city'];
  } 

注意:请参考面向对象的样式和程序样式。

面向对象的风格

$ result = $ connection-&gt; query($ sql);

程序风格

mysqli_query($连接,$ SQL);

http://www.php.net/manual/en/mysqli.query.php

跟随任何人。