gpt4 book ai didi

php - 尝试通过表单插入数据库时​​出错。 SQLSTATE[42S22]

转载 作者:行者123 更新时间:2023-11-29 11:29:18 28 4
gpt4 key购买 nike

当我尝试从表单中获取数据并将其添加到名为 test 的数据库内名为对象的表时,我遇到了一个小问题。

当我打开表单,添加一些信息并按提交时,出现此错误:

Fatal error: Uncaught PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Mr' in 'field list' in *path**

HTML 和 PHP 代码位于同一目录下的两个单独的文件中。

page_1.php

<form action="connect.php" method="post">
Title: <input type="text" name="title"><br />
First name: <input type="text" name="fname"><br />
About: <textarea name="about"></textarea><br />
<input type="reset" name="reset">
<input type="submit" name="submit" value="OK">
</form>

连接.php

try{
$dh = new PDO('mysql:host=127.0.0.1;dbname=test','root','');
$dh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e){
echo $e->getMessage();
die();
}

$title = $_POST['title'];
$content = $_POST['about'];
$name = $_POST['fname'];


$sql = "INSERT INTO objects (post_title, post_content, post_name, post_date)
VALUES ({$title}, {$content}, {$name})";
$query = $dh->query($sql);

while($r = $query->fetch(PDO::FETCH_OBJ)){
echo $r->post_name, '<br>';
}

最佳答案

你有 4 个错误。

  • 列数与值数不匹配(4 列,3 个值)
  • 您正在插入不带引号的字符串值 - 这不起作用
  • 您没有使用准备好的语句,而是使用PDO,所以没有任何借口
  • 您正在发出 INSERT 查询,并且尝试将其视为 SELECT 查询。这完全没有道理。

使用准备好的语句并生成可安全抵御 SQL 注入(inject)的有效查询的代码如下所示:

$stmt = $pdo->prepare("INSERT INTO objects (post_title, post_content, post_name, post_date) VALUES (?, ?, ?, NOW())");

$stmt->execute(array($_POST['title'], $_POST['about'], $_POST['fname']));

如果您需要插入的记录,则发出另一个查询来选择新创建的记录,也使用准备好的语句。

$stmt = $pdo->prepare("INSERT INTO objects (post_title, post_content, post_name, post_date) VALUES (?, ?, ?, NOW())");

$stmt->execute(array($_POST['title'], $_POST['about'], $_POST['fname']));

$id = $pdo->lastInsertId();

$stmt = $pdo->prepare("SELECT * FROM objects WHERE id = ?");

$stmt->execute(array($id));

// Now the record is in an array, no need to while loop over it.
$record = $stmt->fetchAll(PDO::FETCH_ASSOC);

关于php - 尝试通过表单插入数据库时​​出错。 SQLSTATE[42S22],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37687240/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com