我正在学习并从书中做一些练习,在查询后我感到非常恐怖。
我想知道mysqli_num_row的价值,以进一步了解我的错误,但我没有得到一个值。
我已经检查过,如果我把回音'r';我在屏幕上得到一个r,所以我知道该行正在执行,但我无法获得mysqli_num_row的值。
我应该在最后一行写什么才能在屏幕上显示这个值?
$q = "SELECT user_id, first_name FROM users WHERE email='$e' AND pass=SHA1('$p')";
$r = @mysqli_query($dbc, $q); // Run the query.
echo mysqli_num_row($r);
现在我只是一个空白的屏幕。
感谢。
答案 0 :(得分:3)
你使用了错误的功能它实际上是mysqli_num_rows()
;您在s
row
echo mysqli_num_rows($r);
答案 1 :(得分:1)
你可能已经跳过了一封信。尝试:
echo mysqli_num_rows($r);
答案 2 :(得分:1)
我认为您需要编写代码,如下所示。
$q = "SELECT user_id, first_name FROM users WHERE email='$e' AND pass=SHA1('$p')";
$r = mysqli_query($dbc, $q); // Run the query.
echo mysqli_num_rows($r);
您只需从@mysqli_query中删除@符号。
由于
答案 3 :(得分:1)
你可以尝试这个吗,你错过了在s
中mysqli_num_rows
添加mysqli_num_rows()
它应该是$e = mysqli_real_escape_string($dbc, $e);
$p = mysqli_real_escape_string($dbc, $p);
$q = "SELECT user_id, first_name FROM users WHERE email='$e' AND pass=SHA1('$p')";
$r = mysqli_query($dbc, $q) or die(mysqli_error());
echo mysqli_num_rows($r);
{{1}}
答案 4 :(得分:1)
当您从准备好的语句开始学习时,它更容易且不易受到注入攻击。这是一个样本。
/* Create a new mysqli object with database connection parameters */
$mysqli = new mysqli('localhost', 'username', 'password', 'db');
if(mysqli_connect_errno()) {
echo "Connection Failed: " . mysqli_connect_errno();
exit();
}
/* Create a prepared statement */
if($stmt = $mysqli -> prepare("SELECT user_id, first_name FROM users WHERE email=? AND pass=SHA1(?)")) {
/* Bind parameters
s - string, b - blob, i - int, etc */
$stmt -> bind_param("ss", $e, $p);
/* Execute it */
$stmt -> execute();
/* Get num rows */
$mum_rows = $stmt -> num_rows();
/* Bind results */
$stmt -> bind_result($user_id, $first_name);
/* Fetch the value. You may need to fetch in loop if has more than 1 rows. */
$stmt -> fetch();
/* echo the result. */
echo $user_id, ' = ', $first_name;
/* Close statement */
$stmt -> close();
}
/* Close connection */
$mysqli -> close();
注意:错误处理实施由您完成。
如果您对[{1}}
Object oriented style
使用Procedural style