我正在努力将表单中的数据提交到数据库,但是,无论何时提交都没有错误,但我的数据从未出现在我的数据库中。谁能帮我提供一些关于我可能做错了什么的信息?我正在使用 phpMyAdmin 查看我的表格。 谢谢你, 斯蒂芬
<?php
$user= $_POST["txtUser"];
$fName= $_POST["txtFname"];
$lName= $_POST["txtLname"];
$email= $_POST["txtEmail"];
$date= date("r");
$dbh=mysql_connect('webdb.uvm.edu','swakita','MYPASSWORD');
if (!$dbh)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("SWAKITA", $dbh);
if (isset($_POST['butSubmit'])) {
mysql_query("INSERT INTO tblWhere (pk_Username, fldFirstName, fldLastName, fldAdminLevel, fldTotalPosts, fldDateJoined, fldEmail) VALUES (" . $user . "," . $fName . "," . $Lname . ", '4', '0', $date, $email)");
mysql_close();
print $user;
}
?>
编辑 抛出此错误: 您的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在第 1 行的 '' 附近使用的正确语法
这是我目前的代码:
<?php
$user= $_POST["txtUser"];
$fName= $_POST["txtFname"];
$lName= $_POST["txtLname"];
$email= $_POST["txtEmail"];
$date= date("r");
$dbh=mysql_connect('webdb.uvm.edu','swakita','efaemaey');
if (!$dbh)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db('SWAKITA', $dbh);
if (isset($_POST['butSubmit'])) {
mysql_query("INSERT INTO tblWhere (pk_Username, fldFirstName, fldLastName, fldAdminLevel, fldTotalPosts, fldDateJoined, fldEmail) VALUES (' mysql_real_escape_string($user)', 'mysql_real_escape_string($fName)', 'mysql_real_escape_string($Lname)', '4', '0', 'mysql_real_escape_string($date)', 'mysql_real_escape_string($email)'");
if (mysql_errno()) {
echo $sql . "<br/>\n" . mysql_error();
}
mysql_close();
print $user;
}
?>
编辑编辑 我在“mysql_real_escape_string($email)”之后缺少一个括号,但现在它发布的是“mysql_real_escape_string(Example First Name)”,而不仅仅是值。我现在的括号做错了什么?
最佳答案
如果您直接在查询中使用来自 POST 请求的字段,您很容易受到 SQL injection 的攻击。 , 先逃避他们。
$user = mysql_real_escape_string($_POST["txtUser"]);
...
要看问题,查看mysql_query的结果
mysql_query(...);
if (mysql_errno()) {
echo $sql . "<br/>\n" . mysql_error();
}
我认为问题在于您没有在用户等字段周围加上引号。
VALUES (" . $user . "," . $fName . ", ...
应该是:
VALUES ('" . $user . "', '" . $fName . "', ...
或更简单:
VALUES('$user', '$fName', ...
如果你用双引号 "引用你的字符串,你可以在字符串中使用 $variable 并且它们将被评估,而如果你使用用单引号 ' 分隔的字符串,它将逐字打印 $variable。
关于PHP mySQL 代码没有发布到数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9595034/