php页面无法加载MySQL的数据库

时间:2010-08-05 15:56:03

标签: php mysql apache phpmyadmin

我在尝试连接.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

谢谢

2 个答案:

答案 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 Ba​​ker上面提到的,你真的想做一些输入清理以防止sql注入攻击。另外,有没有理由不能将db主机信息硬编码到配置文件中?

相关问题