Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP PDO表未更新数据_Php_Mysql_Pdo - Fatal编程技术网

PHP PDO表未更新数据

PHP PDO表未更新数据,php,mysql,pdo,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)) {

我不熟悉用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');




?> 


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

在PDO execute方法中传递命名参数时,必须将其作为名称前缀为冒号的数组传递(
:name
而不是
name

当传递索引参数时(在prepare方法中使用
),则在execute方法中根本不关联键

因此,请尝试:

$addedQuery->execute([
':name'=>$name,
':user'=>$\u会话['user\u id']
]);

并确保正确设置了
$\u会话['user\u id']

编辑:
您是否在php.ini中打开了php错误

好的。。。在任何人误解必须在数组中使用冒号作为占位符之前,这是一个神话

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

  • 但是,冒号确实需要位于VALUES()中

这里真正的问题是这个
$POST
,它缺少下划线
$\u POST

  • 这是一个超全球:
错误报告会向您抛出一个未定义的变量通知

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

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

// rest of your code

require_once'app/init.php'有问题或它是
POST
。因为这就是我所没有的,你所做的,当我伪造
POST
时,我可以很好地通过插入的数据。其他一切都没有改变。好吧,除了做一个启动会话和填充var。但除此之外!犯错误不,不是必需的,并且是未记录的功能<代码>'name'=>$name,
完全有效。在section参数下,它明确指出**这将是表单的参数名:name**谢谢你的教训,但我不需要它;我已经知道这一点,也知道我已经说过的事实不管怎样,等着手术吧。哦,我说的是“未登记”。你得到的那些反对票,其中一张不是我的,以防你可能会想,因为我现在刚得到一张dv。如果那是你的,那是不必要的,应该收回。我投了一票反对票,因为答案是错误的;至少在这个问题的背景下<代码>您必须
,不,这没有区别。因此,这充其量只是一种编码方式。smart-ass-mode on:“完全合法/有效”,但它在内部以冒号存储,请参见;-)@沃克:很好找到了。如果你不介意的话,我会把它加到我的答案里。cheersI在寻找,因为我怀疑它是另一种情况——但数据是数据:)@VolkerK我知道数组中不需要冒号,而且我一直没有找到它的文档。您所发现/提供的内容,现在为未来读者解答这个问题提供了猜测,谢谢。:)我真不敢相信我竟然如此愚蠢,错过了那条遗漏的下划线。我向你致敬,先生!还有为我澄清结肠神话的坦克。