我刚开始使用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
好的......在任何人得到关于有义务使用冒号作为阵列占位符的误解之前,这是一个神话.
它是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进行连接.
其他参考:
isset() http://php.net/manual/en/function.isset.phpempty() http://php.net/manual/en/function.empty.php脚注:
正如评论中所述,并且是VolkerK的一个很好的发现:
"它内部存储着前导冒号,请参阅"