我在mysqli中收到错误和警告


I am getting errors and warnings in mysqli

更新:

我在mysqli:中有几个错误和警告需要帮助

Fatal error: Call to undefined method mysqli_stmt::get_result() in ... on line 63

在我下面的代码中,有人知道如何处理这些警告和错误吗?

$query = "SELECT * FROM Teacher WHERE TeacherAlias = ?";
// prepare query
$stmt=$mysqli->prepare($query);
// You only need to call bind_param once
$stmt->bind_param("s",$getid);
// execute query
$stmt->execute();  
//get results
$result = $stmt->get_result(); 
$numrows = mysqli_num_rows($result);
if ($numrows == 0){   
       // don't use $mysqli->prepare here
$query = "SELECT * FROM Teacher WHERE TeacherUsername = ?";
// prepare query
$stmt=$mysqli->prepare($query);
// You only need to call bind_param once
$stmt->bind_param("s",$getuser);
// execute query
$stmt->execute(); 
}

您需要首先检索一个mysqli_result对象,其中包含。。。

$res = $stmt->get_result();

然后从这个对象(而不是$stmt)中获取行数:

$numrows = mysqli_num_rows($res);

UPDATE:get_result方法仅在PHP 5.3+中可用,对于旧版本,应使用以下方法:

// $stmt preparing code goes here...
$stmt->execute();
$stmt->store_result();
$num_rows = $stmt->num_rows;
doSomethingWith($num_rows);
// processing cycle:
$stmt->bind_result($some_param, $another_param);
while ($stmt->fetch()) {
   doSomethingElseWith($some_param, $another_param);
}
$stmt->free_result();
$stmt->close();

附带说明一下,有两个建议:1)在这里使用单个查询并同时在TeacherAlias和TeacherUsername字段中查找值可能会更快(使用OR运算符,如TeacherAlias = ? OR TeacherUsername = ?);2) 在查询中使用显式声明的列(SELECT id, TeacherAlias AS alias, TeacherUsername AS username...)而不仅仅是(SELECT *)会更容易。

我不习惯使用msqli,但我会尽力回答你,所以首先,你说程序,"如果请求的结果等于0,那么重新启动。这不是很好,你在白白使用资源。就像raina77ow说的,你想使用

$res = $stmt->get_result();

这个:

$numrows = mysqli_num_rows($res);

如果…

您需要先获取数据,或free_result()

$stmt->fetch();

然后将其传递给mysqli_num_rows()

我的建议是,如果你不需要,跳过提取,然后做:

$stmt->num_rows;

这将在不需要提取结果的情况下计算结果中的行数,并清除光标。