<?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。
任何人都可以说出我的错误吗?
谢谢
答案 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;
而没有括号。