Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.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 插入数据不工作?连接与数据库配合良好_Php_Database_Postgresql_Sql Insert - Fatal编程技术网

Php 插入数据不工作?连接与数据库配合良好

Php 插入数据不工作?连接与数据库配合良好,php,database,postgresql,sql-insert,Php,Database,Postgresql,Sql Insert,我试图在数据库中保存名称one,但它不工作,echo总是返回not working。通过简单的选择,它可以工作,因此连接工作良好。但插页没有。你看到这段代码中有错误吗?最后一个id是20,所以我输入了21,但即使是null,结果也是一样的: <?php try { $name = $_GET['name']; try { $stmt = $dbh->prepare("INSERT INTO person (idperson, name, map) VA

我试图在数据库中保存名称one,但它不工作,echo总是返回not working。通过简单的选择,它可以工作,因此连接工作良好。但插页没有。你看到这段代码中有错误吗?最后一个id是20,所以我输入了21,但即使是null,结果也是一样的:

<?php
try {
    $name = $_GET['name'];
    try {
        $stmt = $dbh->prepare("INSERT INTO person (idperson, name, map) VALUES (21, :name, null)");
        //$stmt->bindParam(':name', $name);
        $stmt->bindParam(':name', $name, PDO::PARAM_STR);
        if ( $stmt->execute() ){
            echo "worked!";
        }
        else {
            echo "not working";
        }
    }
    catch(Exception $ee){
        echo 'Error : '.$ee->getMessage().'<br />';
        echo 'N° : '.$ee->getCode();
    }

}
catch(Exception $e)
{
    echo 'Error : '.$e->getMessage().'<br />';
       echo 'N° : '.$e->getCode();
}
?>

您必须在准备异常之前和之后开始尝试/捕获异常

$name = $_GET['name'];

try {
    $stmt = $dbh->prepare("INSERT INTO person (idperson, name, map) VALUES (21, :name, null)");
    $stmt->bindParam(':name', $name);
    $stmt->execute();
}
catch(Exception $ee){
    echo 'Error : '.$ee->getMessage().'<br />';
    echo 'N° : '.$ee->getCode();
}

执行此操作并查看问题所在

您是否100%确定您使用的用户在其配置文件中具有写入权限?请查看echo为空,这是语法错误,我认为在插入代码的其他情况下也是如此{echo不起作用;echo}Try$stmt->bindParam':name',$name,PDO::PARAM_STR;并删除else Loop中想要的回音谢谢你的评论,不,它仍然不起作用,我在上面编辑了我的帖子。我使用的是localhost,所以我不知道您所说的写权限是什么意思@Allendar?您总是使用用户e.a.root访问您的数据库。如果您正在使用的用户没有写入权限,则无法对INSERT/UPDATE/DELETE/等执行任何操作。您应该在错误消息中看到它。谢谢,但它不起作用。我在上面编辑了我的帖子。我看不出有什么问题…所以答案是索引21已经被获取,但它没有显示在数据库中,我必须重新启动软件并用print\r$dbh->errorInfo;检查错误。无论如何谢谢你的帮助
CREATE TABLE person
(
  idperson integer NOT NULL,
  name character varying(50),
  map bytea,
  CONSTRAINT person_pkey PRIMARY KEY (idperson)
)
$name = $_GET['name'];

try {
    $stmt = $dbh->prepare("INSERT INTO person (idperson, name, map) VALUES (21, :name, null)");
    $stmt->bindParam(':name', $name);
    $stmt->execute();
}
catch(Exception $ee){
    echo 'Error : '.$ee->getMessage().'<br />';
    echo 'N° : '.$ee->getCode();
}