我正在开发一个Web应用程序,允许用户通过Web表单向MySQL数据库添加条目。 Web表单发布到同一页面,一些PHP代码捕获该数据并将其发送到MySQL。无论出于何种原因,没有任何东西可以用于MySQL。这是我到目前为止无法正常工作的代码:
<?php
include("config.inc.php");
$Name=$_POST['AddName'];
$Group=$_POST['AddGroup'];
$Grade=$_POST['AddGrade'];
$Position=$_POST['AddPosition'];
$Email=$_POST['AddEmail'];
$HomeAddress=$_POST['AddHomeAddress'];
$City=$_POST['AddCity'];
$State="SC";
$Zip=$_POST['AddZIP'];
$CellPhone=$_POST['AddCellNumber'];
$HomePhone=$_POST['AddHomeNumber'];
$FirstPeriod=$_POST['AddFirstPeriod'];
$SecondPeriod=$_POST['AddSecondPeriod'];
$ThirdPeriod=$_POST['AddThirdPeriod'];
$FourthPeriod=$_POST['AddFourthPeriod'];
$FifthPeriod=$_POST['AddFifthPeriod'];
$SixthPeriod=$_POST['AddSixthPeriod'];
$SeventhPeriod=$_POST['AddSeventhPeriod'];
$Homeroom=$_POST['AddHomeroom'];
$dbpassword=$_POST['AddPassword'];
$con = mysql_connect("127.0.0.1","$username","******");
if (!$con)
{
die();
}
mysql_select_db("$database", $con);
$sql="INSERT INTO names (Name,Grp,Grade,Position,Email,HomeAddress,City,State,Zip,CellPhone,HomePhone,FirstPeriod,SecondPeriod,ThirdPeriod,FourthPeriod,FifthPeriod,SixthPeriod,SeventhPeriod,Homeroom)
VALUES('$Name','$Group','$Grade','$Position','$Email','$HomeAddress,'$City','$State','$Zip','$CellPhone','$HomePhone','$FirstPeriod','$SecondPeriod','$ThirdPeriod','$FourthPeriod','$FifthPeriod','$SixthPeriod','$SeventhPeriod','$Homeroom')";
if (!mysql_query($sql,$con))
{
die();
}
echo "1 record added";
mysql_close($con)
?>
</body>
</html>
答案 0 :(得分:2)
试试这个并看看它的内容:
if (!mysql_query($sql,$con))
{
die(mysql_error());
}
答案 1 :(得分:1)
尝试插入echo mysql_error();
。这应该至少为您提供查询不正确的起始位置。
答案 2 :(得分:0)
mysql_close($con)
最后应该有一个分号。
检查您的日志是否有错误。
使用mysql_real_escape_string
答案 3 :(得分:0)
PHP隐藏错误。要进行调试,首先将这两行放在<?php
标记
error_reporting(E_ALL);
ini_set('display_errors', '1');
如果错误发生在mysql中,你可以这样做:
print_r(mysql_fetch_array(mysql_query("SHOW WARNINGS", $con)));
或
print_r(mysql_fetch_array(mysql_query("SHOW ERRORS", $con)));
直接在你认为可能失败的mysql查询之后。
答案 4 :(得分:0)
将您的数据库选择更改为
mysql_select_db("database name")
或
mysql_select_db($database);
您正在尝试选择名为“$ database”的数据库,其中美元符号为字符串,而不是该变量中的名称。 另外,使用
mysql_real_escape_string($ sql)来逃避这些变量。(避免使用sql injecion)你可以在其他评论中找到关于它的链接。
答案 5 :(得分:0)
die(mysql_error());
会解决它。
还看看逃避。注入当前代码非常容易。
如果你不想逃避(我不知道你什么时候会这样做)你也可以使用$_POST
而不是分配给变量并使用变量。
答案 6 :(得分:0)
变化
$sql="INSERT INTO names (Name,Grp,Grade,Position,Email,HomeAddress,City,State,Zip,CellPhone,HomePhone,FirstPeriod,SecondPeriod,ThirdPeriod,FourthPeriod,FifthPeriod,SixthPeriod,SeventhPeriod,Homeroom)
VALUES('$Name','$Group','$Grade','$Position','$Email','$HomeAddress,'$City','$State','$Zip','$CellPhone','$HomePhone','$FirstPeriod','$SecondPeriod','$ThirdPeriod','$FourthPeriod','$FifthPeriod','$SixthPeriod','$SeventhPeriod','$Homeroom')";
到
$sql="INSERT INTO names (Name,Grp,Grade,Position,Email,HomeAddress,City,State,Zip,CellPhone,HomePhone,FirstPeriod,SecondPeriod,ThirdPeriod,FourthPeriod,FifthPeriod,SixthPeriod,SeventhPeriod,Homeroom)
VALUES('$Name','$Group','$Grade','$Position','$Email','$HomeAddress','$City','$State','$Zip','$CellPhone','$HomePhone','$FirstPeriod','$SecondPeriod','$ThirdPeriod','$FourthPeriod','$FifthPeriod','$SixthPeriod','$SeventhPeriod','$Homeroom')";