我在尝试连接.php和mysql时遇到了一些问题。 这是connection.php代码
<?php
$db_host =$_POST['localhost'];
$db_user =$_POST['root'];
$db_password = "";
$db_name = "prtcl";
?>
这是我实际使用连接的页面
<?
include("connection.php");
?>
...
<?php
$db = mysql_connect($db_host, $db_user, $db_password);
mysql_select_db($db_name, $db);
if (!$db)
{
die('Could not connect: ' . mysql_error());
}
mysql_close($db);
?>
<body>
...
这就是我尝试加载它时得到的结果(第29行是这个:
$ db = mysql_connect($ db_host, $ db_user,$ db_password);
)
注意:未定义的变量:db_host in C:\ Program Files (x86)\ EasyPHP-5.3.2 \ www \ prtcl \ index.php第29行
注意:未定义的变量:db_user in C:\ Program Files (x86)\ EasyPHP-5.3.2 \ www \ prtcl \ index.php第29行
注意:未定义的变量: C:\ Program Files中的db_password (x86)\ EasyPHP-5.3.2 \ www \ prtcl \ index.php第29行
警告:mysql_connect() [function.mysql-connect]:[2002] A 连接尝试失败,因为 连通党没有(试图 通过tcp:// localhost:3306连接 C:\ Program Files (x86)\ EasyPHP-5.3.2 \ www \ prtcl \ index.php第29行
警告:mysql_connect() [function.mysql-connect]:一个连接 尝试失败,因为连接 一方没有正确回应 一段时间,或已建立 连接失败,因为连接 主持人没有回复。在 C:\ Program Files (x86)\ EasyPHP-5.3.2 \ www \ prtcl \ index.php第29行
致命错误:最长执行时间 C:\ Program超过30秒 档 (x86)\ EasyPHP-5.3.2 \ www \ prtcl \ index.php第29行
你可以看到我正在使用EasyPHP,因为这个代码以前用过(使用不同的db,同时使用手动配置的apache / mysql),可能是因为这个原因?其他信息:我使用phpmyadmin制作数据库,我有win7
谢谢
答案 0 :(得分:1)
在未经验证的情况下,永远从$_POST
获取您的数据库凭据。这是这样的一个可怕的想法,这就是造成错误的原因,因为这些密钥没有在$_POST
中定义,但是它们可能是,结果可能是灾难性的!
尝试将其放入connect.php
$db_host = "localhost";
$db_user = "root";
$db_password = "";
$db_name = "prtcl";
$db = mysql_connect($db_host, $db_user, $db_password);
mysql_select_db($db_name, $db);
if(!$db) {
die('Could not connect: ' . mysql_error());
}
然后在你的其他页面中使用:
require_once("path/to/connect.php");
// ... whatever else you do on this page...
答案 1 :(得分:0)
我会找出为什么没有定义$ db_host变量。这可能是您的表单输入的问题。检查该输入字段的名称是否真的是“localhost”。另外,正如Mark Baker上面提到的,你真的想做一些输入清理以防止sql注入攻击。另外,有没有理由不能将db主机信息硬编码到配置文件中?