使用php连接到mysql
以下是我从OReilly的“学习PHP MYSQL和Javascript”中获得的教程代码使用php连接到mysql,php,mysql,Php,Mysql,以下是我从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_userna
<?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'访问数据库‘发布’”
有人能帮忙诊断这个问题吗
谢谢 改变这个
$result = $mysql_query($query);
对此
$result = mysql_query($query);
函数名是mysql\u query
而不是$mysql\u 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\u query
,它认为mysql\u query
是一个变量,但没有在某个地方定义这样的变量。您是否尝试通过在代码中设置的连接信息手动连接到数据库
首先使用phpmysql连接到数据库,更改phpmysql配置文件以匹配mysql服务器身份验证信息,然后在进一步编码之前确保所有内容都正确。请编写此内容
mysql_select_db($db_database, $db_server)
$result = mysql_query($query);
而不是
mysql_select_db($db_database)
$result = $mysql_query($query);
写下这个
mysql_select_db($db_database, $db_server)
$result = mysql_query($query);
而不是
mysql_select_db($db_database)
$result = $mysql_query($query);
还有一件事请检查您的主机名:$db_hostname='localhost:8888'代码>
一般来说,它是$db_hostname='localhost:8080'代码>
因此,请再次确认$
符号应仅用于变量,而不用于函数
$var=5;// variable declaration
如果要声明函数语法,则不应使用$
例:
在此函数中,var
是变量,mysql\u query($query)
是函数。
停止使用!
您应该不要使用此功能或其他与扩展相关的功能
它在PHP7.0.0及更高版本中被折旧和删除。
另一种选择是使用或。
下面是使用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();
}
?>
您可以按如下方式执行:
<?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";
}
?>
root真的是您的root密码吗?或者您只是为了方便起见才把它放在那里?我还应该添加-您是否成功连接到该数据库?您是否将用户名、密码设置为root?如果出现致命错误(500),请提高php.ini中的错误级别和/或查看Web服务器error.log
。即使大多数初学者教程都告诉您,显示mysql\u错误实际上是个坏主意()因为它可以向攻击者提供他们可以利用的数据库信息。我通常会在我的应用程序中构建某种开发人员模式。类似于在我的数据库顶部设置一个dev_mode=false
,然后在(!$result)死亡(“数据库错误”)之前测试dev_mode
代码>更好的方法是,将开发模式存储在会话
对象中,并仅通过受密码保护的页面进行设置。这个问题似乎与主题无关,因为它涉及的是一个打字错误。这不会给其他答案增加太多内容。