Что с MySQL в PHP? - PullRequest
       28

Что с MySQL в PHP?

1 голос
/ 24 декабря 2009

Раньше я кодировал в php4, но теперь я переключился на php5, и следующий код выдает следующее исключение. Почему это так?

КОД:

$mysqli = new mysqli($CONFIG_DB_HOST,$CONFIG_DB_USERNAME,$CONFIG_DB_PASSWORD,$CONFIG_DB_NAME); 
$result = $mysqli->query("select * from temp_table where url = '" . $mysqli->real_escape_string($in_url) . "'");
$row = $result->fetch_assoc();
$out_title = $row['title']; 

Исключение:

Fatal error: Call to a member function fetch_assoc() on a non-object in detail.php on line 13

Ответы [ 3 ]

2 голосов
/ 24 декабря 2009

Вы также можете проверить, содержит ли ваш результат $ фактический результат:

if ($result != false) {
    $row = $result->fetch_assoc();
}else{
    // do something else!
    // maybe trigger_error()?
}

Также имейте в виду, что если ваш результат содержит более одной строки, вы, скорее всего, захотите пройти через цикл

while ($row = $result->fetch_assoc()) {
    $out_title = $row['title'];
}

Это также не даст вам получить ту ошибку, которую вы получили, потому что цикл while будет оценивать возвращаемое значение $ result-> fetch_assoc (), прежде чем присвоит его $ row, если он вернет false, $ row никогда не будет установлен и цикл while не запускается.

2 голосов
/ 24 декабря 2009

Похоже, что в вашем запросе есть какая-то проблема, и в результате этого метод query() возвращает false вместо result object, и когда вы вызываете метод fetch_assoc() для необъекта, вы получаете это ошибка. Распечатайте запрос, который выполняется, и попытайтесь запустить его, скажем, от phpmyadmin и посмотрите, какую ошибку вы получите.

Также всегда проверяйте возвращаемое значение метода query (), прежде чем продолжить:

if (!$mysqli->query("query")) 
{
    printf("Error: %s\n", $mysqli->error);
}
1 голос
/ 24 декабря 2009

Вы можете:

<?php
    if ($result = $mysqli->query($query)) {

        /* fetch associative array */
        while ($row = $result->fetch_assoc()) {
          //more things
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...