-1

次のコードで、$get_artistがデータベースに存在しない主キーである場合、バインド変数$artistidは常に 0 を返すはずですよね? しかし、そうではなく、常に何も返しません。0 ではなく、何も返しません! なんで?

if (isset($_GET['artist']) && is_numeric($_GET['artist'])) {
   $get_artist = (int)$_GET['artist'];
}

$sql = 'SELECT artist_id, name, legal_name, photo_basename
        FROM artist
        WHERE artist_id = ?';
$conn = connect('read');
$stmt = $conn->stmt_init();
$stmt->prepare($sql);
$stmt->bind_param('i', $get_artist);
$stmt->execute();
$stmt->store_result();
$num_rows = $stmt->num_rows;
$stmt->bind_result($artistid, $name, $legalname, $photo);
$stmt->fetch();
$stmt->free_result();
$stmt->close();


// if $get_artist is an invalid primary key, it should echo 0, right?
echo $artistid;
4

1 に答える 1

1

クエリが行を返さない場合、変数 ( を含む$artistid) は入力されません。

の戻り値を$stmt->fetch()確認できます。である場合null、(それ以上) 行はありませんでした。最初に呼び出したときに返される場合nullは、結果行がまったくなく、変数が何も設定されていないことを意味します (したがって、PHP のデフォルトのnullがおそらく適用されます)。

于 2013-08-18T00:39:33.987 に答える