行の数は、最も一般的なものは、MySQLでCOUNT(*)
を実行することですが、(あなたがその機能を自分で作成しない限り、あなたは、使用のようではないnum_rows()
)mysqli_num_rows($result)
もあります、返さを取得する方法はいくつかあります。 mysqli_stmt_num_rows()
はquery()
の代わりにprepare()
を使用している場合にのみ機能します。
COUNT(*)
を使用するには、最初にクエリを実行して取得する必要があります。mysqli_num_rows()
は、クエリが失敗しなかった場合に使用できるMySQLiResultオブジェクトによって返される定数です。
クエリが実際に成功したかどうかを確認するコードを修正しました。クエリが失敗した場合、mysqli_num_rows()
は機能しません。
$command = "SELECT player_id FROM Player WHERE player_login = '" . $login."' AND player_password= '".$password."' ";
if ($result = mysqli_query($connection, $command)) {
echo mysqli_num_rows($result);
} else {
/* Query failed */
echo "There was an error with the query: $command";
echo "<br />".mysqli_error($connect);
}
COUNT(*)
を使用することもできますが、最初に結果を取得する必要があります。
$command = "SELECT player_id, COUNT(*) as cnt FROM Player WHERE player_login = '" . $login."' AND player_password= '".$password."' ";
if ($result = mysqli_query($connection, $command)) {
$row = mysqli_fetch_assoc($result);
echo $row['cnt'];
} else {
/* Query failed */
echo "There was an error with the query: $command";
echo "<br />".mysqli_error($connect);
}
また、あなたがその身を守るためにプレースホルダを用いてプリペアドステートメントを使用する方法を学ぶ必要があり、このクエリは、SQLインジェクションの脆弱性であることに注意してください。 manual on prepare()
はそれを開始するのに適しています。
また、プレーンテキストで、または(例えばmd5
またはsha1
など)が悪いの方法のいずれかでパスワードを保存しているようです。 PHPのオファーには、組み込み関数password_hash()
/password_verify()
を使用する必要があります。 PHPバージョン5.5より下の場合、これらの関数はネイティブではありませんが、代わりに使用できるCompability Packがあります。
最終的に、オブジェクト指向と手続き型コードを混合することは技術的には機能しますが(実際は手続き型のものがオブジェクト指向のものを呼び出すため)、悪い習慣とみなされます。オブジェクトと接続する場合は、引き続きオブジェクト指向のコードを使用してください。
http://php.net/password_hash
トライ数()関数はありません取得します。行の –
@RahulPawar 'count'は配列に対して機能します。 OPはクエリに一致する行数を求めています! –
@RahulPawarはmysql関数を意味すると思います。COUNT –