使用MySQLi进行简单查询

时间:2013-02-03 18:16:34

标签: php mysqli

如果我的数据库表格包含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";
}

1 个答案:

答案 0 :(得分: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);

您可以在manual page

上查看详细信息

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

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

但首先要熟悉原始API函数是明智的。