2

如果我有数据库表,users(name,job) (john,Poster)并且我MySQLi使用此代码进行查询,那将有效。

$job = "Poster";

$statement = $con->prepare("SELECT * FROM users WHERE `job` =  ?");
$statement->bind_param("s",$job);
$statement->execute();
$statement->bind_result($name,$job);

while ($statement->fetch()){
echo $name;
}

如果我做了$job = "NOTHING";并且没有结果怎么办,那么我怎么能显示错误,例如echo "No reuslts found";$job如果没有找到上面的代码,它不会显示任何内容。~ 谢谢

编辑 这个也没有用:(

$job = "NOTHING"; // should not found and should gives error

if ($statement = $con->prepare("SELECT * FROM users WHERE `job` =  ?")){
$statement->bind_param("s",$job);
$statement->execute();
$statement->bind_result($name,$job);

while ($statement->fetch()){
echo $name;
}

}else{
echo "No results found dude";
}
4

1 回答 1

0

不要使用 mysqli。它不适用于准备好的语句。
请改用 PDO。

使用 PDO,您的代码会更短、更合理、更有效。

$statement = $con->prepare("SELECT * FROM users WHERE `job` =  ?");
$statement->execute(array($job));
if ($row = $statement->fetch()){
    echo $row['name'];
} else {
    echo "No results found dude";
}

您需要先创建一个连接。像这样的东西

$dsn  = 'mysql:dbname=test;host=127.0.0.1';
$user = 'dbuser';
$pass = 'dbpass';
$con  = new PDO($dsn, $user, $pass);

您可以在手册页上查看详细信息

作为进一步的步骤,您可以移动到一些帮助程序库,这将使您的代码更短:

$name = $db->getOne("SELECT name FROM users WHERE job=?s",$job);
if ($name) {
    echo $name;
} else {
    echo "No results found dude";
}

但最好先熟悉原始 API 函数。

于 2013-02-03T19:16:11.047 回答