Любая причина, почему следующий код не будет работать?
$dbconnection = db::getInstance(); //this is a singleton db class
$stmt = $dbconnection->prepare("SELECT `id` from `table` where `username`=?");
$stmt->bind_param("s", $username);
$stmt->execute();
$stmt->bind_result($uid);
$stmt->fetch();
echo $uid;
Тот же метод подключения используется в другом месте, и он работает там. Единственная разница на той другой странице, где она работает, заключается в том, что извлекается несколько строк, а не только одна.
edit: Я не получаю сообщения об ошибке. echo $uid
просто ничего не выводит. Он должен отображать идентификатор пользователя из БД (да, этот запрос из БД работает правильно, проверил его).
Можете ли вы предложить хороший способ отладки, если вы не можете сразу увидеть проблему?
редактировать:
Попытка переключения execute() and bind_result()
позиций, без разницы.
редактировать
Я наконец-то получил ошибку / предупреждение:
Предупреждение: mysqli_stmt :: mysqli_stmt () [mysqli-stmt.mysqli-stmt]: не удалось получить db
решаемые
Хорошо. Я решил свою проблему. Я полагаю, вы не должны закрывать соединение с БД при использовании одноэлементного класса? Я не знал об этом. Проблема заключалась в том, что после вызова функции «вход в систему» я сделал $dbconn->close();
, а позже я захватил тот же экземпляр, поэтому соединение с БД было закрыто.