INSERT数据不起作用?连接适用于数据库

时间:2013-12-22 14:17:57

标签: php database postgresql sql-insert

我试着保存名字"一个"在数据库中,但它不起作用,回声总是返回"不工作"。使用简单的SELECT,它可以工作,因此连接工作正常。但插入没有。你会在这段代码中看到任何错误吗? (最后一个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();
}
?>

但SELECT工作:

//this works
$stmt = $dbh->prepare("SELECT name FROM person WHERE idperson=1");
$stmt->execute();
while($lines = $stmt->fetch(PDO::FETCH_OBJ)){
    echo $lines->name.'<br />';
}

postGreSQL:

CREATE TABLE person
(
  idperson integer NOT NULL,
  name character varying(50),
  map bytea,
  CONSTRAINT person_pkey PRIMARY KEY (idperson)
)

1 个答案:

答案 0 :(得分:0)

您必须在 prepare()之前和之后开始尝试/捕获异常。

$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();
}

做到这一点,看看问题是什么