MySQL 没有连接到数据库
Posted
技术标签:
【中文标题】MySQL 没有连接到数据库【英文标题】:MySQL doesn't connect to the database 【发布时间】:2016-02-22 03:51:55 【问题描述】:我正在我的电脑上的 LAMP 下测试本地登录数据库页面。即使我可以从终端连接到 mysql,我也不能从 php 脚本中这样做。我已经在网上到处查看了,但无论我走到哪里,它都只是以下代码的一种或另一种变体
<!DOCTYPE html5>
<html>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<link rel="stylesheet" type="text/css" href="style.css">
<head>
</head>
<body>
<?php
$username = $_POST['username'];
$password = $_POST['password'];
/* connect to the db */
$connection = mysql_connect('localhost', 'username', 'password') or die ("Connect error");
mysql_select_db('myDatabase',$connection);
/* show tables */
$res = mysql_query("SHOW DATABASES", $connection) or die ("No Show Database");
while ($row = mysql_fetch_row($res))
echo $row[0], '<br/>';
?>
</body>
</html>
还有另一个页面需要用户名和密码,然后通过 POST 方法将其传递到此页面,但此页面立即显示连接错误。我尝试使用 if else 而不是 or die 但仍然无法连接。
【问题讨论】:
or die ("Connect error");
对您没有帮助。 or die(mysql_error())
将,or die ("No Show Database");
相同
Your script is at risk for SQL Injection Attacks.
如果可以的话,你应该stop using mysql_*
functions。 These extensions 已在 PHP 7 中删除。了解PDO 和 MySQLi 的 prepared 语句并考虑使用 PDO,it's really not hard。
也使用php.net/manual/en/function.error-reporting.php
这里的目标是什么?使用 POST 数组/变量并充当数据库连接的参数?
【参考方案1】:
您必须将变量传递给连接函数并显示有意义的错误描述:
$username = $_POST['username'];
$password = $_POST['password'];
/* connect to the db */
$connection = mysql_connect('localhost', $username, $password) or die(mysql_error());
Your script is at risk for SQL Injection Attacks.
如果可以的话,你应该stop using mysql_*
functions。 These extensions 已在 PHP 7 中删除。了解 prepared 的 PDO 和 MySQLi 语句并考虑使用 PDO,it's really not hard。
虽然您真的不想以这种方式连接到您的数据库,但它留下了太多的机会。当你使用密码时,你真的应该使用 PHP 的built-in functions 来处理密码安全。如果您使用的 PHP 版本低于 5.5,则可以使用 password_hash()
compatibility pack。
【讨论】:
不干净的变量传递到数据库函数@vp_arth。我正试图在通行证上阻止它。 如果你是关于user/pass
- 它的意思是接收不干净的变量(原样)。但是,如果您要查询,那么没有任何连接的show databases
怎么会有 sql 注入的风险?
他没有将它们传递给SHOW DATABASES;
OP 正在将它们传递给mysql_connect()
,并且那里没有可能进行 SQL 注入。我只是提醒OP。这不是“是否”的问题,而是 OP“何时”将用户数据发送到他们的数据库的问题。
嗯,好吧)我只是想,可能是在mysql_connect
中发现了新的漏洞,说密码很长......也许你知道,我不知道 :)
@JayBlanchard 我看你一直都是对的 Sam。我认为你已经从商店拿回了你的水晶球,而且都打磨得很漂亮,我可以补充一下 ;-)以上是关于MySQL 没有连接到数据库的主要内容,如果未能解决你的问题,请参考以下文章
连接网站显示数据库错误:无法连接到数据库:无法连接到MySQL?
在没有xml的spring boot中连接到mysql数据源