这些准备好的陈述是否正确

时间:2015-05-19 11:24:03

标签: php pdo

我是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

1 个答案:

答案 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

旁注:错误报告应仅在暂存时完成,而不是生产。