PHP PDO表不更新数据

Kar*_*ren 1 php mysql pdo

我刚开始使用PHP进行编码,并且在尝试创建待办事项列表时,我在创建一个名为"add.php"的文件后撤消了,该文件应该向表中添加新数据.主文件index.php调用表元素ok并在浏览器上显示它们,但我无法添加新项.

add.php中的代码在这里:

<?php

require_once 'app/init.php';

if(isset($_POST['name'])) {
    $name = trim($POST['name']);

    if(!empty($name)) {
        $addedQuery = $db->prepare("
            INSERT INTO items (name, user, done, created) 
            VALUES (:name, :user, 0, NOW() )
                ");

        $addedQuery->execute([
            'name' => $name,
            'user' => $_SESSION['user_id']
            ]);
    }
}

header('location: index.php');




?> 
Run Code Online (Sandbox Code Playgroud)

如果它有帮助,我在WampServer 2.5上使用PHP 5.5.12和MySQL 5.6.17

Fun*_*ner 5

好的......在任何人得到关于有义务使用冒号作为阵列占位符的误解之前,这是一个神话.

  • 它是PDO中完全合法/有效的语法.(参考脚注).

  • 然而,冒号确实需要在VALUES()中.

这里真正的问题是这个$POST,并且缺少它的下划线$_POST.

错误报告会抛出未定义的变量通知.

错误报告添加到文件的顶部,这将有助于查找错误.

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code
Run Code Online (Sandbox Code Playgroud)

旁注:显示错误只能在分段中完成,而不能在生产中完成.

另外,确保会话数组已设置/不为空,并且会话已启动.您的帖子中未显示/显示.

还要确保表单确实使用POST方法,并且输入包含输入的name属性.

即: <input type="text" name="name">

检查PDO中的错误:

您的连接方法也不清楚,因此请确保您确实使用PDO进行连接.

  • 不同的MySQL API不会混用.

其他参考:


脚注:

正如评论中所述,并且是VolkerK的一个很好的发现:

"它内部存储着前导冒号,请参阅"