PHP mySQL 代码没有发布到数据库?

标签 php mysql database phpmyadmin

我正在努力将表单中的数据提交到数据库,但是,无论何时提交都没有错误,但我的数据从未出现在我的数据库中。谁能帮我提供一些关于我可能做错了什么的信息?我正在使用 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/

相关文章:

php常量键值数组

mysql - Spark : com. mysql.jdbc.Driver 不允许创建表作为选择

MySQL 将第一个值(-1)设置为数字?

Django 按列的第一个字符分组对象

mysql - 将 MySQL CREATE TABLE 语法转换为 Postgresql

php - 避免意外的双 htmlspecialchars 编码?

php - 扩展 Phalcon\Db\Adapter\Pdo\Mysql 时连接过多

php - 来自 MySQL JSON 编码数组的 Google 图表

php - MySQL查询有什么区别

javascript - SQL 查询 2 个表,其中给定日期范围内的值不在两个表中