我试着保存名字"一个"在数据库中,但它不起作用,回声总是返回"不工作"。使用简单的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)
)
答案 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();
}
做到这一点,看看问题是什么