以下是来自OReilly的“学习PHP MYSQL和Javascript”的以下教程代码。
<?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';
时,我得到另一个错误:“无法连接到数据库:访问被拒绝用户'''localhost'到数据库'出版物'”。
任何人都可以帮助诊断问题吗?
谢谢!
答案 0 :(得分:7)
更改此
$result = $mysql_query($query);
到这个
$result = mysql_query($query);
函数名称为mysql_query
而非$mysql_query
,$
用于变量名称。
此外,您可以使用PHP命令行代替在浏览器窗口中立即“查看”代码。如果您的文件名为foo.php
,则可以执行以下操作:
>> 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
是变量,但这样的变量没有在某处定义。
答案 1 :(得分:2)
您是否尝试通过在代码中设置的连接来手动连接到数据库,
首先使用phpmysql连接到db,更改phpmysql配置文件以匹配mysql服务器身份验证信息,然后在编码之前确保所有内容都正确。
答案 2 :(得分:0)
请写这个
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';
所以请再确认一次
答案 3 :(得分:0)
$
符号只能用于不属于函数的变量
$var=5;// variable declaration
如果你想声明函数语法$不应该使用
例如:
$function_var = mysql_query($query);
在此function_var
是变量,mysql_query($query)
是函数。
答案 4 :(得分:0)
mysql_connect()
!您应不使用与this扩展名相关的此功能或其他相关功能。
它在PHP 7.0.0及更高版本中被折旧和删除。 另一种方法是使用PDO或MySQLi。 下面是使用PDO连接MySQL的示例脚本:
<?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();
}
?>
答案 5 :(得分:0)
你可以这样做:
<?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";
}
?>