【问题标题】:Insert into table doesn't go in Postgres插入表格不进入 Postgres
【发布时间】:2018-10-03 09:52:08
【问题描述】:

我已经创建了一个页面以将元素插入到 php 中的数据库中。 在开始时,我开始使用 mySQL,它运行良好。然后我迁移到 Postgres,所以我遇到了一些问题。 我更改了我的代码,但我没有收到错误,但是当我尝试将我的元素插入数据库时​​,它仍然是空的。

这是我的表结构Prenotazione

CREATE TABLE public."Prenotazione"
(
  id integer NOT NULL DEFAULT nextval('"Prenotazione_id_seq"'::regclass),
  nominativo character(20),
  email character(20),
  oggetto character(200),
  nominativoi character(200),
  nominativoe character(200),
  emaili character(200),
  emaile character(200),
  data date,
  orario_inizio time without time zone,
  orario_fine time without time zone,
  stanza integer
)

这是我的 index.php

<form method="post" action="input.php">
                        <b>&ensp;Richiedente Conferenza:</b><br><br>
                        &ensp;Nominativo:<br>&ensp;<input type="text" name="nominativo" placeholder="Nome Cognome" size="20"><br>
                        &ensp;Email: <br> &ensp;<input type="email" name="email" size="20" placeholder="email"><br>
                        &ensp;Oggetto Conferenza:<br>&ensp;<textarea name="oggetto" rows="5" cols="40" placeholder="Specificare oggetto Videoconferenza"></textarea><br>
                        &ensp;Data: <br>&ensp;<input  type="date" name="data"  ><br>
                        &ensp;Orario Inizio: <br>&ensp;<input type="time" name="orario_inizio" min="09:30:00" max="16:30:00" ><br>
                        &ensp;Orario Fine: <br>&ensp;<input type="time" name="orario_fine" min="10:00:00" max="18:30:00"><br>

                        <br>
                        <b>&ensp;Partecipanti Interni </b>
                        <br>
                        <br>
                <div id="interni">
                    <div id="first">
                        &ensp;Nominativo:<br>&ensp;<textarea name="nominativoi" rows="5" cols="30" placeholder="Nome Cognome;"  ></textarea><br>
                        &ensp;Email:<br>&ensp; <textarea  name="emaili" rows="5" cols="30" placeholder="Inserire Email"></textarea><br> 
                      <br>
                      <br>
                    </div>
                </div>
                        <b>&ensp;Partecipanti Esterni </b>
                <div id="esterni">
                    <div id="first">
                               &ensp;Nominativo:<br>&ensp;<textarea name="nominativoe" rows="5" cols="30" placeholder="Nome Cognome;" ></textarea><br>
                                &ensp;Email:<br>&ensp;<textarea  name="emaile" rows="5" cols="30" placeholder="Inserire Email"></textarea><br> 
                      <br>
                    &ensp;&ensp;<input type="submit" value="Invia" > 
                        </form>

最后是 input.php

$checkdata = "SELECT count(*) as prenotato
  FROM Prenotazione
 WHERE data='$data'
   AND NOT ('$newTimeEnd' < orario_inizio OR orario_fine < '$orario_inizio')";

$querycheck = $dbh->prepare($checkdata);
$querycheck->execute();
$prenotato = $querycheck->fetch()[0];
var_dump($prenotato);
if ($prenotato == 0 AND $stanza == 0 ) { 

    $query1 = "INSERT INTO Prenotazione (nominativo,email,data,orario_inizio,orario_fine,oggetto,nominativoi,emaili,nominativoe,emaile,stanza) VALUES ('$nominativo','$email','$data','$orario_inizio','$newTimeEnd','$oggetto','$nominativoi','$emaili','$nominativoe','$emaile',1)";
    var_dump($query1);
    $result1 = $dbh->prepare($query1);
    $result1->execute();
    $rex = 1;
}
else if ($prenotato == 1){
    $query1 = "INSERT INTO Prenotazione (nominativo,email,data,orario_inizio,orario_fine,oggetto,nominativoi,emaili,nominativoe,emaile,stanza) VALUES ('$nominativo','$email','$data','$orario_inizio','$orario_fine','$oggetto','$nominativoi','$emaili','$nominativoe','$emaile',2)";
    $result1 = $dbh->prepare($query1);
    $result1->execute();
    $rex = 1;
}

我发布了对该问题感兴趣的部分。 谢谢

var_dump 的结果是:

NULL string(269) "INSERT INTO Prenotazione (名词性,电子邮件,数据,orario_inizio,orario_fine,oggetto,名词性,电子邮件,名词性,电子邮件,节) 价值观 ('用户名','email@email.com','2018-10-03','09:30','12:30','对象','username1','email1@email1.com','用户名2','email2@email2.com',1)"

【问题讨论】:

  • 可能该语句会导致错误。你检查了吗?
  • @LaurenzAlbe 我该如何检查?奇怪的是,在mysql中代码运行良好。
  • 我尝试了唯一插入数据库的方法,但他不起作用。我试图打印像 var_dump($nominativo) 这样的变量,它需要这个。所以我不明白问题出在哪里
  • 检查execute是否返回truefalse
  • 我尝试打印“注意:未定义的变量:第 41 行 /opt/lampp/htdocs/PhpProject1/inputs.php 中的参数失败!”!我现在该怎么办???

标签: php postgresql


【解决方案1】:

问题在于您的表名用双引号引起来。不要使用双引号,或者在每个请求中都使用它们。

您可以在此处验证您的代码:

http://rextester.com/VIEH75483

另外,查看更多:Omitting the double quote to do query on PostgreSQL

【讨论】:

  • 感谢您的回答,我创建了没有“”的新表,但插入不去:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多