2014-01-31 175 views
0

我想知道为什么它不适用于mysqli eventhou mysql_num_row正在工作。Mysqli num row returned is not working

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

这是mysql。但是,我试图将其转换为mysqli。

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

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

+4

您使用'完全mysqli'?如果您正在使用'mysql_query'运行查询并尝试使用'mysqli_num_rows'获取num_rows,那么它将不起作用。你必须在任何地方使用mysqli函数。 –

+0

在你的页面中,你一次可以使用'mysql'或'mysqli'。你不能同时使用它们两个。 –

+0

什么是$行?显示整个片段。 – user4035

回答

0

首先,一些mysql_*mysqli_*功能之间的差异的快速教程。

mysql_*你将有3个参数为您的数据库连接,然后有一个单独的行选择你的数据库。

例如:

$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 = new mysqli("host","username", "password", "db_name"); 

if (mysqli_connect_errno()) { 
printf("Connect failed: %s\n", mysqli_connect_error()); 
exit(); 
} 

那么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)); 
    } 
} 
+1

伟大的教程!并谢谢你!!!!! – Anthosiast

+0

谢谢,你非常欢迎@ user3246061 –

0

你可以试试这个代码:

$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);