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 に答える