-2

关于这个类似的问题有很多帖子,但我仍然无法为我的代码得到明确的答案,即 PHP 和 MySQL 组合。提交表格后,我总是收到错误消息。肯定和语法有关。有趣的是 mysql 没有抱怨,我的 apache 也没有,而是在我的浏览器(firefox)上。

$add_master_sql = "INSERT INTO master_name (date_added, date_modified, f_name, l_name)
VALUES (now(), now(), '".$_POST["f_name"]."', '".$_POST["l_name"]."')";
$add_master_res = mysqli_query($mysqli, $add_master_sql) or die(mysqli_error($mysqli));

我的MYSQL代码是:

CREATE TABLE master_name (
  id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
  date_added DATETIME,
  date_modified DATETIME,
  f_name VARCHAR (75),
  l_name VARCHAR (75)
);

可能与报价有关,但我仔细检查了匹配项,这很好。有人可以帮我解决这个问题吗?

4

2 回答 2

3

更重要的是使用 pdo 准备好的查询来避免可能的 sql 注入。

<?php
// configuration
$dbtype     = "sqlite";
$dbhost             = "localhost";
$dbname     = "test";
$dbuser     = "root";
$dbpass     = "admin";

// database connection
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);

// new data
$dateAdded = getdate();
$dateModified = getdate();
$f_name = $_POST["f_name"];
$l_name = $_POST["l_name"];

// query
$sql = "INSERT INTO master_name (date_added, date_modified, f_name, l_name) VALUES (:f_name, :l_name, :dateAdded, :dateModified)";
$q = $conn->prepare($sql);
$q->execute(array(':dateAdded'=>$dateAdded ,
                  ':dateModified'=>$dateModified,
                  ':f_name'=>$f_name,
                  ':l_name'=>$l_name));    

?>
于 2012-04-29T06:58:33.143 回答
-1

“字段列表”中的未知列“地址”

在“字段列表”中查找使用“地址”列的查询。
您在此处发布的显然不是发出此错误的那个。
改变你die(mysqli_error($mysqli));

trigger_error(mysqli_error($mysqli));

对于页面上的所有查询,
并查看发生错误的特定位置。

另请注意,您应该将查询中的每个变量转义为带引号的字符串,使用mysqli_real_escape_string(并保护所有其他变量免受 SQL 注入)或将它们作为准备好的语句插入。

如果你的书没有告诉你 - 烧掉它!

于 2012-04-29T07:21:19.907 回答