Php 返回的Mysqli num行不工作

Php 返回的Mysqli num行不工作,php,mysql,mysqli,Php,Mysql,Mysqli,我想知道为什么在mysql\u num\u行运行时,它对mysqli不起作用 if (mysql_num_rows($rows) > 0) { echo "<p>That name has been taken </p>"; } if(mysql\u num\u rows($rows)>0){ echo“该名称已被采用””; } 那就是mysql。但是,我试着把它转换成mysqli if (mysqli_num_rows($rows) > 0)

我想知道为什么在mysql\u num\u行运行时,它对mysqli不起作用

if (mysql_num_rows($rows) > 0) {
    echo "<p>That name has been taken </p>";
}
if(mysql\u num\u rows($rows)>0){
echo“该名称已被采用”

”; }
那就是mysql。但是,我试着把它转换成mysqli

 if (mysqli_num_rows($rows) > 0) {
        echo "<p>That name has been taken </p>";
    }
if(mysqli_num_rows($rows)>0){
echo“该名称已被采用”

”; }

它应该显示在屏幕上,但不是。并且没有显示任何错误消息。还是我遗漏了什么?有什么想法吗?

您可以尝试以下代码:

$connect = new mysqli("localhost", "user", "password", "database");
$query = "SELECT name FROM table";

$statement= mysqli_prepare($connect, $query)
mysqli_stmt_execute($statement);
mysqli_stmt_store_result($statement);

if (mysqli_stmt_num_rows($statement) > 0) {
    echo "<p>That name has been taken </p>";
}   

mysqli_stmt_close($statement);
mysqli_close($connect);
$connect=newmysqli(“本地主机”、“用户”、“密码”、“数据库”);
$query=“从表中选择名称”;
$statement=mysqli\u prepare($connect,$query)
mysqli_stmt_execute($statement);
mysqli_stmt_store_结果($statement);
如果(mysqli\u stmt\u num\u行($statement)>0){
echo“该名称已被采用”

”; } mysqli_stmt_close($statement); mysqli_close($connect);
首先,是关于
mysql*
mysqli*
函数之间的一些差异的快速教程

mysql.*
中,您将有3个用于DB连接的参数,然后有一个单独的行用于DB选择

例如:

$db = mysql_connect("host","username", "password");
$db_selected = mysql_select_db('db_name', $db);
if (!$db_selected) {
    die ('Can\'t use this : ' . mysql_error());
}
mysql_query($query,$db);
首先是查询,然后是数据库连接

例如:

$db = mysql_connect("host","username", "password");
$db_selected = mysql_select_db('db_name', $db);
if (!$db_selected) {
    die ('Can\'t use this : ' . mysql_error());
}
mysql_query($query,$db);
但是在
mysqli.*
中,包括参数位置在内的情况发生了变化。现在,您可以放置所有4个参数,例如(如果尚未放置):

然后DB连接将首先出现,然后是查询,而不是反过来:

mysqli_query($db,$query);
示例查询:

$email = mysqli_real_escape_string($db,$_POST['email']);
$query = mysqli_query($db, "SELECT * FROM table_name WHERE email='".$email."'");

if(mysqli_num_rows($query) > 0){

    echo "email already exists";
}else{
    $sql="INSERT INTO table_name (email) VALUES ('$email')";
    if (!mysqli_query($db,$sql))
    {
        die('Error: ' . mysqli_error($db));
    }
}

您是否完全使用了
mysqli
?如果您正在使用
mysql\u query
运行查询,并尝试使用
mysqli\u num\u rows
获取num\u行,那么它将不起作用。你必须在任何地方使用mysqli函数。在你的页面中,你可以一次使用
mysql
mysqli
。不能同时使用它们。什么是$行?显示整个代码段。