@m4f1

Где ошибка в функции запроса в бд?

Не получается поместить в переменную $n вывод с запроса

UPD: строка содержит адрес, который нужно сравнить с другим адресом, и, если совпадает - пропустить, добавив +1 к просмотру; если не совпадает, то занести в БД.

Через
echo $rqul;
выдает
http://адрес/334343434/

Если вызвать
echo $n;
то выдаст ошибку
Catchable fatal error: Object of class waDbResultSelect could not be converted to string in


if ($e->getCode() === 404) {

                 $model = new waModel();

                 $n = $model -> query("SELECT * FROM `w3m_404urls` WHERE `url`= '$rqul'");
                 //var_dump(array($n));
                 //print_r(array($n));

                 if ($n == $rqul) {
                     $model -> query("UPDATE `w3m_404urls` SET `views`=`views`+1 WHERE `url` = '$rqul'");
                 } else {
                     $model -> query("INSERT INTO `w3m_404urls`(`id`, `url`, `date`) VALUES ( 'NULL','$rqul','$rquldate')");

                 }

                 return $this;
             }
  • Вопрос задан
  • 118 просмотров
Решения вопроса 1
erge
@erge
Примус починяю
Catchable fatal error: Object of class waDbResultSelect could not be converted to string in

вы хотя бы пробовали перевести данную строку??
объект класса waDbResultSelect не может быть преобразован в строку

ни о чем не говорит??

Ну вы посмотрите внимательно, что вы делаете-то??
$n = $model -> query("SELECT * FROM `w3m_404urls` WHERE `url`= '$rqul'")


у вас в $n находится waDbResultSelect, т.е. резалтсет (целая строка(и) таблицы)
к тому же и в запросе у вас * (т.е. в результате как минимум не одно поле)

может быть вы все-таки из резалтсета возьмете одно поле url и будете его сравнивать с $rqul , а не весь резалтсет?

см. waModel и waDbResultSelect

Ну, и, не вижу никакого смысла сравнивать кислое с пресным, в смысле одно и тоже.
вы выбираете по url и потом выбранное опять с ним же сравниваете ??
надо считать кол-во выбранного - если > 0 , то запись есть. соответственно далее ...

$n = $model -> query("SELECT * FROM `w3m_404urls` WHERE `url`= '$rqul'")->count();
if ($n > 0 ) {
// UPDATE
} else {
// INSERT
}


PS: ну и почему бы не упомянуть что вы используете Webasyst , здесь экстрасенсы??
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
IgorPI
@IgorPI
Вот здесь вы намудрили

Не правильно
"SELECT * FROM `w3m_404urls` WHERE `url`= '.$rqul.'"


Относительно правильно.
"SELECT * FROM `w3m_404urls` WHERE `url`= '$rqul'"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы