Запрос PHP + MySQL -> Что не так с этим SQL (кратко) - PullRequest
0 голосов
/ 05 октября 2011

Я окончил MS Access для MySQL. К сожалению, я даже не могу получить правильный запрос. Может кто-нибудь сказать, пожалуйста, что не так? Я продолжаю получать сообщение «неверный запрос», указанное в php.

<?php
@ $db = mysql_connect('localhost', 'root', 'root', 'newdatabase');
if (!$db) {
    die ('Failed to connect to the database.');
}


$query = "SELECT first FROM demographics";
$result = mysql_query($query);

if (!$result) {
    die('invalid query');
}

while ($row = mysql_fetch_assoc($result)) {
    echo $row['first'];
}

?>

Кроме того, книга, которую я читаю, подсказывает мне использовать:

new mysqli('localhost', 'root', 'root', 'newdatabase')

для подключения вместо

mysql_connect

Я использовал в приведенном выше коде. Я не смог подключиться к БД с новым mysqli . Имеет ли значение, какой я использую?

1 Ответ

3 голосов
/ 05 октября 2011

Четвертый параметр для mysql_connect() не является именем базы данных. Это логическое значение, указывающее, устанавливать ли дополнительное новое соединение или использовать существующее. Чаще всего это опускается. Используйте mysql_select_db() для выбора базы данных. Поскольку вы не выбрали базу данных в своем коде, ваш запрос, скорее всего, не выполнен.

$db = mysql_connect('localhost', 'root', 'root');
if (!$db) echo mysql_error();
else mysql_select_db("database");

Примечание. Я удалил @ из вызова mysql_connect(). @ подавляет ошибки и, возможно, мешает вам увидеть, что происходит с вашим соединением.

При проверке успешности или неудачи запроса не die(). Вместо этого выводите mysql_error() при разработке приложения. В производстве вы можете заменить echo, написав вместо этого error_log().

if (!$result) {
  echo mysql_error();
}

Что касается использования MySQLi вместо базовых функций mysql_*, MySQLi можно использовать объектно-ориентированным способом, а также предлагает подготовленные операторы, которые могут быть как более эффективными, так и более безопасными. Как уже упоминалось в комментариях выше, PDO часто рекомендуется как наиболее гибкий API для взаимодействия с СУБД из PHP.

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