PHP页面连接到DB的问题

时间:2011-08-30 06:41:09

标签: php mysql

<?php

$dbserver="localhost";
$username="root";
$pass="root";

$link=mysql_connect("$dbserver","$username","$pass");
if(!$link){die('DB Connection Failed'.mysql_error()); }
echo('connected');
    $Name=$_POST["namei"];
    $ID=$_POST["pid"];
    $Address=$_POST["address"];
    $Phone=$_POST["phone"];

    $query="INSERT INTO contact(Name,ID,Address,Phone) VALUES('".$Name."',".$ID.",'".$Address."',".$Phone.");";

    echo($query);



?>

我使用上面的代码连接到mysql数据库,我将内容从html页面发布到此页面。我检查了POST没有问题。但点击提交它会给我一个错误'500内部服务器错误'。

我正在使用Apache 2.2 Server和mysql 5.5。

任何人都可以说出我的错误吗?

谢谢

2 个答案:

答案 0 :(得分:1)

首先请运行

<?php
echo 'phpversion: ', phpversion(), "<br />\n";
if ( !extension_loaded('mysql') ) {
    die('mysql module not available');
}
echo 'mysql_get_client_info: ', mysql_get_client_info(), "<br />\n";
die;

检查是否a)你可以运行任何 php脚本,b)mysql_ *函数是否可用。
然后尝试

<?php
echo "start<br />\n";
error_reporting(E_ALL);
ini_set('display_errors', true);
flush();

$dbserver="localhost";
$username="root";
$pass="root";

$link=mysql_connect($dbserver, $username, $pass);
if(!$link) {
    die('DB Connection Failed '.mysql_error());
}
echo "connected<br />\n";
if ( !mysql_select_db('dbname here', $link) ) {
    die('DB selection failed. '.mysql_error($link));
}
echo "db selected<br />\n";

$Name = mysql_real_escape_string($_POST['namei'], $link);
$ID = mysql_real_escape_string($_POST['pid'], $link);
$Address = mysql_real_escape_string($_POST['address'], $link);
$Phone = mysql_real_escape_string($_POST['phone'], $link);

$query = "
    INSERT INTO
        contact
        (Name,ID,Address,Phone)
    VALUES
        ('$Name', '$ID','$Address','$Phone')
";
echo '<pre>Debug: query=', htmlentities($query), "</pre>\n"; 

它在任何情况下打印一些内容(echo / flush)并设置error_reporting + display_errors以便将错误消息发送到客户端(您不希望它在生产中,不要忘记删除这些行。) 我还添加了对mysql_select_db()mysql_real_escape_string()的必要调用(只要脚本真的将查询发送到mysql服务器就需要)。

答案 1 :(得分:0)

K,

你应该添加

ini_set('display_errors', 1); 
error_reporting(E_ALL);

到脚本的开头。这将停止500错误,并为您提供正确的错误消息,以便您更好地了解出现了什么问题。

可能是echo($query);行,只需要echo $query;而没有括号。