私は準備されたステートメントを学ぼうとしているだけで、PHPマニュアルに従ってガイドしています.stackoverflowでこの問題に関する回答を確認しましたが、解決策が見つかりません.$stmt-> num_rowsは常に( Return 0 )
stackoverflow に関する投稿で問題が議論されており、$stmt-num_rows の直前に $stmt->store_result() を使用するようアドバイスされていますが、$stmt->num_rows は 0 を返します。
ここで私が間違っていることを教えてください....私は手続き型のコーディングにうんざりしていて、準備されたステートメントでスキルを高めたいと思っています
これが下の関数です
function get_all()
{
// ** Initializing the Connection
$mysqli = Connect();
$sql = ( ' SELECT * FROM `users` ' );
$stmt = $mysqli->prepare($sql);
$stmt->execute();
$res = $stmt->get_result();
echo $num_count = $stmt->num_rows();
$user = array();
for ($counter = 0; $row = $res->fetch_assoc(); $counter++)
{
$user[$counter] = $row;
}
return $user;
}
// 2回目の更新です
function get_all()
{
// ** Initializing the Connection
$mysqli = Connect();
$sql = ( ' SELECT * FROM `users` ' );
$stmt = $mysqli->prepare($sql);
$stmt->execute();
$res = $stmt->get_result();
echo $num_count = $stmt->num_rows;
$user = array();
while($row = $res->fetch_assoc())
{
$user[] = $row;
}
return $user;
}
// 3 回目の更新
function get_alll()
{
// ** Initializing the Connection
$mysqli = Connect();
// no need to use * character,
// need to write query this way
$sql = ( ' SELECT `id`,`fname`,`lname`,`uname`,`email` FROM `users` ' );
$stmt = $mysqli->prepare($sql);
// here need to use bind param
$stmt->bind_result( $id, $fname, $lname, $uname, $email);
$stmt->execute();
// it's important to store the result
// before using num rows
$res = $stmt->store_result();
echo $num_count = $stmt->num_rows;
//
while($stmt->fetch())
{
echo $fname;
}
}