Вот мой следующий учебный код от «Изучение PHP MYSQL и Javascript» от OReilly.
<?php //require_once = 'login.php'; $db_database = 'publications'; $db_hostname = 'localhost:8888'; $db_username = 'root'; $db_password = 'root'; $db_server = mysql_connect($db_hostname, $db_username, $db_password); if(!$db_server) die("Unable to connect to MYSQL: ". mysql_error()); mysql_select_db($db_database) or die("Unable to connect to database: " . mysql_error()); $query = "SELECT * FROM classics"; $result = $mysql_query($query); if(!$result) die ("Could not query: " . mysql_error()); $rows = mysql_num_rows($result); for($j = 0; $j < $rows; ++$j) { echo 'Author: ' . mysql_result($result, $j, 'author') . '</br>'; echo 'Title: ' . mysql_result($result, $j, 'title'). '</br>'; echo 'ISBN: '.mysql_result($result, $j, 'isbn').'</br>'; } ?>
Тем не менее, я получаю сообщение об ошибке при попытке подключения. Браузер говорит, что это ошибка 500 (что действительно не так полезно). Когда я $db_username = 'root'; $db_password = 'root';
строки $db_username = 'root'; $db_password = 'root';
$db_username = 'root'; $db_password = 'root';
Я получаю еще одну ошибку: «Не удается подключиться к базе данных: доступ запрещен для пользователя« @ »localhost» к публикациям базы данных ».
Может ли кто-нибудь помочь диагностировать проблему?
Благодаря!
Изменить это
$result = $mysql_query($query);
к этому
$result = mysql_query($query);
Имя функции – mysql_query
не $mysql_query
, $
используется в именах переменных.
Кроме того, вместо того, чтобы пытаться «видеть» ваш код сразу в окне браузера, вы можете использовать командную строку PHP вместо этого. Если ваш файл называется foo.php
вы выполните coudl:
>> php foo.php PHP Notice: Undefined variable: mysql_query in /var/www/foo.php on line 17 PHP Fatal error: Function name must be a string in /var/www/foo.php on line 17
Как вы видите, сообщение об ошибке довольно ясно. Из-за использования $mysql_query
он думает, что mysql_query
– это переменная, но такая переменная где-то не определена.
Вы пытаетесь подключиться вручную к своему db по настройке соединения, установленной в коде,
сначала используйте phpmysql для подключения к db, измените файл конфигурации phpmysql, чтобы он соответствовал запросу проверки подлинности сервера mysql, а затем убедитесь, что все правильно, прежде чем что-либо кодировать.
напишите это
mysql_select_db($db_database, $db_server)
вместо
mysql_select_db($db_database)
И напишите это
$result = mysql_query($query);
вместо
$result = $mysql_query($query);
Еще одна вещь, пожалуйста, проверьте ваше имя хоста: $db_hostname = 'localhost:8888';
В общем случае это $db_hostname = 'localhost:8080';
Поэтому, пожалуйста, подтвердите еще раз
mysql_connect()
! Вы не должны использовать эту или другие связанные функции, связанные с этим расширением.
Он обесценивается и удаляется в PHP 7.0.0 и выше. Альтернативой является использование PDO или MySQLi . Ниже приведен пример сценария для подключения к MySQL с использованием PDO:
<?php /* Connect to a MySQL database using driver invocation */ /* DSN options: http://php.net/manual/en/ref.pdo-mysql.connection.php Error handling options: http://php.net/manual/en/pdo.error-handling.php Learn how to secure against SQL injection attacks: http://php.net/manual/en/pdo.prepared-statements.php */ $user = 'myusername'; $pass = 'mypassword'; $host = 'localhost'; $mydb = 'mydatabase'; $dsn = "mysql:dbname=$mydb;host=$host"; try { $dbh = new PDO($dsn, $user, $pass); } catch (PDOException $e) { echo 'Connection failed: ' . $e->getMessage(); } ?>
$
символ должен использоваться только для переменных, не относящихся к функциям
$var=5;// variable declaration
если вы хотите объявить синтаксис функции $, не следует использовать
Пример:
$function_var = mysql_query($query);
В этой function_var
является переменной и mysql_query($query)
является функцией.
вы можете сделать это, как показано ниже:
<?php $conn = mysqli_connect("localhost","root",""); if (!$conn) { die("Connection failed:".mysqli_connect_error()); } $db = mysqli_select_db($conn,"Database_name"); if(!$db) { echo "Connection failed"; } ?>