我正在制作一个带有多个下拉框的搜索框。 这是主页:
<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给定
我做错了什么?
答案 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,
跟随任何人。