Php 为什么insert不起作用并且在postresql上不输出任何错误?
我试着检查一个表是否已经存在,如果不存在,它应该创建它并将给定的数据插入表中,但是如果它已经存在,它应该直接插入数据。但我只是得到了一个简单的页面。pg_错误();不是什么都不输出。有人能帮忙吗?。。下面是代码Php 为什么insert不起作用并且在postresql上不输出任何错误?,php,postgresql,insert,create-table,not-exists,Php,Postgresql,Insert,Create Table,Not Exists,我试着检查一个表是否已经存在,如果不存在,它应该创建它并将给定的数据插入表中,但是如果它已经存在,它应该直接插入数据。但我只是得到了一个简单的页面。pg_错误();不是什么都不输出。有人能帮忙吗?。。下面是代码 <?php $pra = "SELECT * FROM people"; $decks = pg_query($connection, $pra); if(!$decks){
<?php
$pra = "SELECT * FROM people";
$decks = pg_query($connection, $pra);
if(!$decks){
$sql = "CREATE TABLE people(
mom INT PRIMARY KEY NOT NULL,
non TEXT NOT NULL,
ooo INT NOT NULL,
ppp INT NOT NULL,
aqqq TEXT,
pq TEXT
)";
$ins = " INSERT INTO people (mom, non, ooo, ppp, aqqq, pq)
VALUES(
'$mom', '$non', '$ooo’, '$ppp’, '$aqqq', '$pq')";
$rcon =pg_query($connection, $ins);
if(!$rcon){
pg_last_error($connection);
}else{
echo "Record added to database"; //success
confirmation
}
}
?>
请尝试类似的方法。注意插入时使用了pg_query_params()
而不是pg_query()
,以防止SQL注入
<?php
$pra = "SELECT * FROM people";
$decks = pg_query($connection, $pra);
if(!$decks){
$sql = "CREATE TABLE people(
mom INT PRIMARY KEY NOT NULL,
non TEXT NOT NULL,
ooo INT NOT NULL,
ppp INT NOT NULL,
aqqq TEXT,
pq TEXT
)";
$rcon = pg_query($connection, $sql);
if(!$rcon){
echo pg_last_error($connection);
} else {
echo "Database table created"; //success confirmation
}
}
$val_array = array($mom, $non, $ooo, $ppp, $aqqq, $pq);
var_dump($val_array);
$ins = " INSERT INTO people (mom, non, ooo, ppp, aqqq, pq)
VALUES($1, $2, $3, $4, $5, $6)";
$rcon =pg_query_params($connection, $ins, $val_array);
if(!$rcon){
echo pg_last_error($connection);
} else {
echo "Record added to database"; //success confirmation
}
?>
您没有使用pg_last_error
执行任何操作-它返回一个字符串,但您没有将其分配给任何对象。您的查询在$ppp
之后也缺少一个引号,这就是插入本身不起作用的原因。(我假设所有查询变量实际上都是在其他地方定义的)您知道您实际上没有在if分支中执行任何数据库查询,对吗?你所做的就是给一个变量分配一些文本。如果你想在任何情况下执行这个插入,或者是插入到已经存在的表中,或者是插入到你刚刚在if分支中创建的表中(或者尝试创建的表中)——那么,为什么插入首先会在一个elseif中(或者通常是其他?'$ooo',$ppp,
<缺少引号。@iainn哦,很抱歉,这是一个错误,但在原始代码中…它们已关闭。我尝试了此操作,但它也显示空白页,此处值的内容为$1,$2。。。。它们是否与数组的值相等?@Vvictory I更新了答案。1美元、2美元。被数组中相应的值安全替换。这显示了错误。。我可以在这里处理这个问题。:)