尝试从表单中获取数据并将其添加到名为test的数据库中的对象表时,我遇到了一个小问题。
当我打开表单时,添加一些信息并按提交,我收到此错误:
致命错误: 未捕获的PDOException:SQLSTATE [42S22]:找不到列:1054未知 专栏'先生'在'字段列表'在*路径**
HTML和PHP代码位于同一目录下的两个单独文件中。
page_1.php
sourceSets {
integrationTest {
java {
compileClasspath += main.output + test.output
runtimeClasspath += main.output + test.output
srcDir file('src/it/java')
output.classesDir = "$buildDir/classes/it"
}
def resourceDir = file('src/it/resources')
if (resourceDir.exists()) {
resources.srcDir resourceDir
output.resourcesDir = "$buildDir/resources/it"
}
}
}
connect.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>
答案 0 :(得分:1)
你有4个错误。
PDO
,因此没有任何理由INSERT
个问题,并且您正在尝试将其视为SELECT
个查询。这根本没有意义。使用预准备语句的代码,并生成对SQL注入安全的工作查询,如下所示:
$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);