Php 为什么insert不起作用并且在postresql上不输出任何错误?

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){

我试着检查一个表是否已经存在,如果不存在,它应该创建它并将给定的数据插入表中,但是如果它已经存在,它应该直接插入数据。但我只是得到了一个简单的页面。pg_错误();不是什么都不输出。有人能帮忙吗?。。下面是代码

  <?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美元。被数组中相应的值安全替换。这显示了错误。。我可以在这里处理这个问题。:)