我得到的mysqli的错误和警告(I am getting errors and warnings

2019-10-17 03:48发布

更新:

我有一对夫妇,我需要用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(); 

}

Answer 1:

您需要检索mysqli_result第一对象,喜欢的东西...

$res = $stmt->get_result();

...然后从该对象(不取的行数$stmt ):

$numrows = mysqli_num_rows($res);

更新: 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 *在你的查询)。



Answer 2:

我不习惯用msqli工作,但我会尽量回答你,所以首先,落落说,项目,“如果请求的结果等于0,则重新启动所有一次。这不是很好,你“再利用资源,什么都没有。就像raina77ow说,你要使用

$res = $stmt->get_result();

和这个:

$numrows = mysqli_num_rows($res);

那么你就不需要了,如果你的条件...



Answer 3:

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

$stmt->fetch();

然后通过这对mysqli_num_rows()

我的建议是,跳过读取,如果你不需要它,这样做:

$stmt->num_rows;

这将算在你的结果的行数,而无需把它拿来,并清除光标。



文章来源: I am getting errors and warnings in mysqli