mysqli_affected_rows()期望参数1为mysqli,给定对象

时间:2012-02-26 20:31:13

标签: php mysqli

我正在为表单进行服务器端验证。使用AJAX,表单将'username'的输入字段中的值发送到我的php页面,然后检查该用户名是否已存在于数据库中。

这是我的php代码:

$result = mysqli_query($dblink, "SELECT * FROM users WHERE `username` = '$regname'") 
or die(mysqli_error($dblink));
echo mysqli_affected_rows($result);

*(目前我正在为mysqli_affected_rows做一个简单的回声,看看我的MySQL查询是否按预期工作)*

我得到的错误是:

  

警告:mysqli_affected_rows()要求参数1为mysqli,第20行/Users/test/Sites/proj/formvalidate.php中给出的对象

我不太确定这个错误试图告诉我什么。从我的Googled“对象”是对OOP编程方法的引用,但(据我所知)我在这个特定的例子中没有使用OOP概念/原理?或者我误解了这条错误信息?

谢谢。

5 个答案:

答案 0 :(得分:7)

不是将$result传递给mysqli_affected_rows,而是实际上想要传递数据库链接(由mysqli_connect返回),这将为您提供受上一个查询影响的行数。参见:

http://uk.php.net/mysqli_affected_rows

答案 1 :(得分:1)

echo mysqli_affected_rows($dblink);

mysqli对象包含受影响行的计数而不是结果集。 我建议您使用带有OO风格的mysqli或尝试PDO。

答案 2 :(得分:0)

您应该只提供$mysqli_link(在您的情况下为$dblink),而不是您编写的代码中的$result

答案 3 :(得分:0)

echo mysqli_num_rows($result);

这应该有用。

答案 4 :(得分:0)

您想要选择的行数。

mysqli::$affected_rows 应该用于 INSERT、UPDATE、REPLACE 或 DELETE 查询 (affected_rows PHP.net)

对于 SELECT 查询(您想要的),有 mysqli_result::$num_rows (num_rows PHP.net)。 如您所见,应该对 SELECT 查询的结果使用 num_rows。

您想要的是 echo mysqli_num_rows ( $result ),它为您提供所选行的数量。

两者的用法示例:

$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

$mysqli->query("CREATE TABLE Language SELECT * from CountryLanguage");
echo "Affected rows (INSERT): " . $mysqli->affected_rows; // $mysqli is the link variable to the DB

$result = $mysqli->query("SELECT Code, Name FROM Country ORDER BY Name");
echo "Selected rows: " . $result->num_rows; // Here we use the $result variable from the query