- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Запрос в бд:
$mysqli = new mysqli(''.$bd_db.'', ''.$bd_user.'', ''.$bd_password.'', ''.$bd_base.'');
$proverka = $mysqli->prepare("SELECT `id` FROM `users` WHERE `username`=?");
$proverka->bind_param("s", $login);
$proverka->execute();
$proverka = $proverka->get_result();
if($proverka->num_rows > 0){ echo 1; }
Не работает!!! 10 раз проверял все вводимые данные, все столбцы в бд и т.п. Подключение mysqli работает! Запрос не выполняется! Ошибка на строке: $proverka = $proverka->get_result(); !!! ЧТо делать, подскажите? Уже 2 часа мучаюсь...
---------- Добавлено 16.12.2013 в 19:20 ----------
Если попробовать перед ошибкой вывести переменную через print_r($proverka) то выводит: mysqli_stmt Object ( )
Хотя должен выбрать, в бд есть строки. Делал запрос в phpmyadmin, там он работает.
''.$bd_db.''
WTF?
http://www.php.net/manual/ru/book.mysqli.php
if($mysqli->connect_errno){
die('Error connect to db '.$mysqli->connect_error);
}
Ошибка на строке: $proverka = $proverka->get_result();
var_dump($login);
http://www.php.net/manual/ru/mysqli-stmt.get-result.php
if($mysqli->connect_errno){
die('Error connect to db '.$mysqli->connect_error);
}
Ошибку не выдает, подключение к бд нормальное.
Чето я не пойму зачем var_dump($login)? Он просто выводит $login, показывает что это string и 7 символов. А мне что это дает?
---------- Добавлено 16.12.2013 в 19:46 ----------
php версия 5.2.17, поэтому не работает?
---------- Добавлено 16.12.2013 в 20:04 ----------
Правильно я понял?
А мне что это дает?
Это дает как минимум то, что $login не пустой.
Капайте в сторону своего запросу, если 0 записей - значит mysql по такому запросу совпадений не нашел. Отсюда и ходите. Проверяйте ту ли базу вы указали, в правильной кодировке ли $login если кириллица и тд. Полтергейстов не бывают (не в этой ситуации).
Это дает как минимум то, что $login не пустой.
Капайте в сторону своего запросу, если 0 записей - значит mysql по такому запросу совпадений не нашел. Отсюда и ходите. Проверяйте ту ли базу вы указали, в правильной кодировке ли $login если кириллица и тд. Полтергейстов не бывает (не в этой ситуации).
Так вот так вот я копал 2 часа, и когда уже силы исякли, идей и догадок в чем может быть проблема больше не было, я написал сюда. Но теперь как я понял, это из-за версии PHP?
Но теперь как я понял, это из-за версии PHP?
Как вы это поняли из вышесказанного, мне вот интересно? Кроме вас насчет версии php здесь больше никто ничего не говорил.
Капайте дальше свой запрос... Условие лучше всего делать по числовой айдишке. В качестве запроса вообще можно сделать простой COUNT(*) без никаких условий. Переделайте код на процедурный, если вы уверены что записей там есть а объект mysqli вас обманывает. Переделайте на обычный драйвер mysql/
Как вы это поняли из вышесказанного, мне вот интересно? Кроме вас насчет версии php здесь больше никто ничего не говорил.
Капайте дальше свой запрос... Условие лучше всего делать по числовой айдишке. В качестве запроса вообще можно сделать простой COUNT(*) без никаких условий. Переделайте код на процедурный, если вы уверены что записей там есть а объект mysqli вас обманывает. Переделайте на обычный драйвер mysql/
Я уже пробовал переделывать запрос, если он через query:
$proverka = $mysqli->query("SELECT `id` FROM `users` WHERE `email`='$email' AND `md5_email`='$md5_email' ");То все прекрасно работает. Такой код:
$add_user = $mysqli->prepare("INSERT INTO `users` (`username`, `email`, `password`, `date`, `md5_email`) VALUES (?, ?, ?, ?, ?)");$add_user->bind_param("sssss", $login, $email, $password, $date, $md5_email);
$add_user->execute();
$add_user->close();
Тоже прекрасно работает. Ошибка была только (похоже) в $proverka = $proverka->get_result();
http://www.php.net/manual/ru/mysqli-stmt.get-result.php <- сдесь написано, что версия PHP: (PHP 5 >= 5.3.0) Следовательно, версия должна быть более 5.3 У меня версия 5.2.17, исходя из этого у меня не работает эта функция, а следовательно и не выполняется запрос, хотя запрос без этой функции, тот же insert работает нормально. Выходит вся проблема в версии PHP, правильно?
Да ёмаё, или версию 5,4 поставьте стабильную или юзайте обычный mysql запросы без всяких наворотов.
Следовательно, версия должна быть более 5.3 У меня версия 5.2.17
Следовательно да.