Получить свойство num_rows не объекта - PullRequest
0 голосов
/ 17 марта 2019

У меня есть PHP-скрипт, который отправляет электронное письмо, выбирает данные из таблицы и затем вставляет некоторые данные в таблицу.У меня есть 3 запроса в одном файле.Но в последнем запросе я получаю сообщение об ошибке

Попытка получить свойство 'num_rows' необъекта в C: \ xampp \ htdocs \ Revolutionen \ includes \ accept.php в строке 76

Я искал опечатки, но не нашел.Кто-нибудь, кто умнее меня, может мне помочь?Хе-хе.

Полный код:

$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();
?>```

Ответы [ 2 ]

0 голосов
/ 17 марта 2019

INSERT запросы не возвращают результаты.Поэтому, когда вы сделаете

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

*, 1005 * будет либо TRUE, либо FALSE, а не mysqli_result объектом.Вы не должны пытаться проверять количество строк или вызывать $result3->fetch_assoc(), так как нечего извлекать.Просто проверьте, было ли это успешно:

if ($result3) {
    echo 'Personen blev automatiskt whitelistad.';
} else {
    echo "Error" . $conn->error;
}
0 голосов
/ 17 марта 2019

На самом деле проблема в том, что вы пытаетесь получить доступ к переменной вне цикла 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 = выбрать запрос из белого списка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...