【问题标题】:Get property num_rows of non-object获取非对象的属性 num_rows
【发布时间】:2019-03-17 15:25:31
【问题描述】:

我有一个 PHP 脚本,它发送一封电子邮件,从表中选择数据,然后将一些数据插入到表中。我在同一个文件中有 3 个查询。但是在最后一个查询中,我收到了错误消息

尝试在第 76 行获取 C:\xampp\htdocs\Revolutionen\includes\accept.php 中非对象的属性“num_rows”

我查找了任何拼写错误,但没有找到。比我聪明的人能帮帮我吗?呵呵。

完整代码:

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "emildeveloping5";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

mysqli_set_charset($conn,"utf8");

$sql = "UPDATE ansokningar SET besvarad=2 WHERE id=".$_GET['row_id'];

if ($conn->query($sql) === TRUE) {
     echo "Ansökningen godkänndes.";
} else {
    echo "Error updating record: " . $conn->error;
}

$sql2 = "SELECT email FROM ansokningar WHERE id=".$_GET['row_id'];
$result = $conn->query($sql2);

if ($result->num_rows > 0) {
    echo "";
    while($row = $result->fetch_assoc()) {
     $email = $row['email'];
    }

     $to = "$email";
     $subject = "Ansökan | Stockholm Emergency Roleplay";
     $txt = "
     <html>
     <head>
     </head>
     <body>
     <p>Din ansökan är godkänd!</p>
     <p>Intervju tider står i våran Discord.</p>
     <p>Mvh Stockholm Emergency Roleplay.</p>
     </body>
     </html>

     ";
     $headers = "From: noreply@stockholmemergencyroleplay.se" . "\r\n" .
     "CC: noreply@stockholmemergencyroleplay.se";

     mail($to,$subject,$txt,$headers);

     echo ('Email är skickat.');

} else {
    echo "Error" . $conn->error;
}

$sql3 = "SELECT steam FROM ansokningar WHERE id=".$_GET['row_id'];
$result2 = $conn->query($sql3);

if ($result2->num_rows > 0) {
    echo "";
    while($row = $result2->fetch_assoc()) {
        $steam = $row['steam'];
     echo "";
    }
     echo ('Steam HEX fångat.');

} else {
    echo "Error" . $conn->error;
}

$sql4 = "INSERT INTO whitelist (identifier, whitelisted) VALUES ('$steam', '1')";
$result3 = $conn->query($sql4);

if ($result3->num_rows > 0) {
    echo "";
    while($row = $result3->fetch_assoc()) {
     echo "";
    }
     echo ('Personen blev automatiskt whitelistad.');

} else {
    echo "Error" . $conn->error;
}

$conn->close();
?>```

【问题讨论】:

  • 这意味着查询出现错误,但您并没有检查它是否成功。将$conn-&gt;query($sql2) 更改为$conn-&gt;query($sql2) or die($conn-&gt;error)
  • 你好@Barmar。试过这个,但不工作:/
  • 不显示 MySQL 错误信息?
  • 第 76 行是哪一行?您还需要为$sql3$sql4 执行此操作。在尝试使用结果之前,您应该检查所有查询是否成功。
  • 第 76 行是: if ($result3->num_rows > 0) {

标签: php mysqli


【解决方案1】:

INSERT 查询不返回结果。所以当你这样做时

$result3 = $conn->query($sql4);

$result3 将是 TRUEFALSE,而不是 mysqli_result 对象。您不应该尝试检查行数或致电$result3-&gt;fetch_assoc(),因为没有什么可以获取的。只需检查是否成功:

if ($result3) {
    echo 'Personen blev automatiskt whitelistad.';
} else {
    echo "Error" . $conn->error;
}

【讨论】:

    【解决方案2】:

    实际上问题是您试图在 while 循环之外访问一个变量。

    if ($result2->num_rows > 0) 
    { 
     echo ""; 
     while($row =$result2->fetch_assoc())     { 
    $steam = $row['steam']; 
    echo ""; 
    $sql4 = "INSERT INTO whitelist (identifier, whitelisted) VALUES.   ('$steam', '1')"; 
    } 
    echo 'Steam HEX fångat.'; } 
    else { echo "Error" . $conn->error; }
    

    然后$sql4 = 选择白名单查询

    【讨论】:

    • 我尝试回显 $steam 变量,它工作正常。
    • 你在哪里试过?在 while 循环之外回显 $steam。
    • Nvm,没用。那我怎么才能访问 steam 变量呢?
    • 为什么会导致这个错误?他从不使用$steam-&gt;num_rows
    • 为什么在while循环外使用$steam会出现问题? PHP 没有变量的块作用域。
    猜你喜欢
    • 2019-11-17
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-12
    • 1970-01-01
    • 2014-12-09
    相关资源
    最近更新 更多