安装mysqlnd后,php $ num_rows无法正常工作



我正在尝试使我的$num_rows工作。它一直在起作用,现在却没有。阅读该网站的建议是我在服务器上安装MySqlnd,因为某些事情fetch_arrayget_result不起作用,现在就像我希望我永远不会安装它一样。(我应该卸载吗?(

我一直在尝试多种变体来尝试使$num_rows工作 - 和其他功能 - 我不知道是什么是对或错。你能帮我吗 ?我遇到的错误是:

Fatal error: Call to undefined method mysqli::stmt() in /var/www/html/checkcontact.php on line 34

第34行是:$result = $con->stmt($query);

这是我的代码:

<?php
require('dbConnect.php');
//post all contacts in my phone as a JSON array
$json = $_POST['phonenumber'];
//decode the JSON
$array = json_decode($json);
//bind 
 $query = "SELECT * FROM user WHERE username = ?";
 $stmt = $con->prepare($query) or die(mysqli_error($con));
 $stmt->bind_param('s', $phonenumber);
 //for each value of phone_number in the array, call it $phonenumber
    foreach ($array as $value)
    {
        $phonenumber = $value->phone_number;
$stmt->execute();
$result = $con->stmt($query);
//$result = $stmt->get_result(); 
//$stmt->store_result();
//$num_rows = $stmt->num_rows();
 //$result = mysqli_query($con, $query);
 if ($result->$num_rows > 0) {
    //  while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
    // while($row = mysqli_fetch_assoc($result)){ 
    // $contact_id = $row['user_id'];
    // echo $contact_id;
    echo "number of phone numbers in the user table is " . $num_rows  . "<br>"; 
     }
 }
 ?>

编辑:这是我的dbconnect.php文件,按照要求:

<?php
define ('HOST', 'localhost');
define ('USER', 'bob');
define ('PASS', 'password');
define ('DB', 'mydb');
$con = NEW MySQLi("localhost", "bob", "password", "mydb");
if ($con->connect_error) {
    die("Connection failed: " . $con->connect_error);
} 
?>

您的第一个错误是此行

$result = $con->stmt($query);

您可能想改用get_result()

没有mysqli::stmt()方法。然后,没有$result->$num_rows,但这是结果的属性,这意味着它应该是 $result->num_rows(松动$(。

通过这些更改进行了修订,这很可能是您的代码的外观。

//post all contacts in my phone as a JSON array
$json = $_POST['phonenumber'];
//decode the JSON
$array = json_decode($json);
//bind 
$query = "SELECT * FROM user WHERE username = ?";
$stmt = $con->prepare($query) or die($con->error);
$stmt->bind_param('s', $phonenumber) or die ("MySQLi-stmt binding failed ".$stmt->error);
//for each value of phone_number in the array, call it $phonenumber
foreach ($array as $value) {
    $phonenumber = $value->phone_number;
    $stmt->execute() or die ("MySQLi-stmt execute failed ".$stmt->error);
    if ($stmt->num_rows > 0) { // Check if there are any rows matching this value
        $result = $stmt->get_result(); // Convert from MySQLi_stmt to MySQLi_result (to use fetch_assoc())
        echo "Number of rows matching username '".$value->phone_number."' from user-table is " . $result->num_rows  . " rows.<br>"; 
        while ($row = $result->fetch_assoc()) {
            echo $row['user_id']."<br />";
        }
    } else {
        echo "No rows matching username ".$value->phone_number.".<br />";
    }
}
$stmt->close();

请注意,mysqli_stmt::get_result()方法需要MySQLND驱动程序。如果您没有该驱动程序,则必须使用mysqli_stmt::bind_result()mysqli_stmt::fetch()以不同的方式获取结果(除此之外,安装该驱动程序 - 如果正确安装 - 不会影响您的代码(。

  • http://php.net/manual/en/mysqli-stmt.get-result.php
  • http://php.net/manual/en/mysqli-stmt.num-rows.php

相关内容

  • 没有找到相关文章

最新更新