我是PDO
的新手并且是自由职业者,学习PHP
最后经过一些研究后我的代码是
<?php
define('DB_SERVER', "localhost");
define('DB_USER', "user");
define('DB_PASSWORD', "123456789");
define('DB_DATABASE', "test");
define('DB_DRIVER', "mysql");
$country = filter_input(INPUT_POST, 'country');
$capital = filter_input(INPUT_POST, 'capital');
$language = filter_input(INPUT_POST, 'language');
try {
$db = new PDO(DB_DRIVER . ":dbname=" . DB_DATABASE . ";host=" . DB_SERVER, DB_USER, DB_PASSWORD);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $db->prepare("INSERT INTO countries(name, capital, language) VALUES (:country, :capital, :language)");
$stmt->bindParam(':country', $country, PDO::PARAM_STR, 100);
$stmt->bindParam(':capital', $capital, PDO::PARAM_STR, 100);
$stmt->bindParam(':language', $language, PDO::PARAM_STR, 100);
if($stmt->execute()) {
echo '1 row has been inserted';
}
$db = null;
} catch(PDOException $e) {
trigger_error('Error occured while trying to insert into the DB:' . $e->getMessage(), E_USER_ERROR);
}
?>
这些陈述是否正确 上面的代码是准备好的声明正确 因为我得到了错误
致命错误:尝试插入数据库时发生错误:SQLSTATE [42S22]:未找到列:1054 Champ'name'配置在C:\ Users \ sanoj \ Documents \ NetBeansProjects \ AA WYSIWYG \ PDO中的字段列表第28行准备了stament.php
答案 0 :(得分:2)
(name, capital, language) VALUES (:country, :capital, :language)
错误很明显,name
列不存在。
致命错误:尝试插入数据库时发生错误:SQLSTATE [42S22]:未找到列:1054 Champ'name'配置在C:\ Users \ sanoj \ Documents \ NetBeansProjects \ AA WYSIWYG \ PDO中的字段列表第28行准备了stament.php
您可能打算使用country
,查看您的VALUES中的第一个值。
还要确保所有变量都正确填充,表单使用post方法,并且所有元素都包含name属性。
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:错误报告应仅在暂存时完成,而不是生产。