【问题标题】:php pdo insert statement not workingphp pdo插入语句不起作用
【发布时间】:2012-05-05 08:59:37
【问题描述】:

我在主机 gator 上有一个站点。我可以连接我的 pdo 语句,但插入语句似乎不起作用。现在我已经定义了这些值,但我计划使用从前一页表单中的 $_POST 中提取的变量。

<?php

/*** mysql hostname ***/
$hostname = 'xxx.xxx.xxx.xxx';

/*** mysql username ***/
$username = 'pressgym_admin';

/*** mysql password ***/
$password = '*******';  <-started out on purpose

try {
$dbh = new PDO("mysql:host=$hostname;dbname=pressgym_press", $username, $password);
/*** echo a message saying we have connected ***/
$qry = $dbh->prepare('INSERT INTO contact (Name, Email Address, Message, Date) VALUES (?, ?, ?, ?');
$qry->execute(array('Brandon', 'Brandon.braner@gmail.com', 'test message', '3.12.12'));

echo 'entry succesfull';

}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>

   describe contact;
   Name varchar(255)    NO  PRI     
   EmailAddress varchar(255)    NO          
   Message  longtext    NO          
   Date varchar(255)    YES 

【问题讨论】:

  • 使用$dbh-&gt;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);启用 PDO 异常
  • 我会把主机名改成假的。如果那是一个真正的 IP,那你只是在要求滥用......
  • 由于某种原因添加为评论的唯一正确答案。
  • @MikeB 的评论解决了我遇到的问题。默认情况下禁用异常似乎是一个糟糕的设计决定。它创建了一个场景,其中 PDO 是神秘的妻子(“不,它很好。”)而 PHP 是健忘的丈夫(“很好?好吧!继续下一件事......”)。

标签: php mysql insert pdo


【解决方案1】:

prepare 命令中的 SQL 语法包含错误:

qry = $dbh->prepare('INSERT INTO contact (Name, Email Address, Message, Date) VALUES (?, ?, ?), ?');

应该是

qry = $dbh->prepare('INSERT INTO contact (Name, `Email Address`, Message, Date) VALUES (?, ?, ?, ?)');

【讨论】:

  • 哇,你真快;)我看到我发了之后,还是不行
  • @BrandonBraner:我已经更新了我的答案,以反映Email Address 列的标识符需要被引用才能处理它包含的空间。
  • 哎呀我的错。我没有注意到这个空间,并认为它是另一列
  • @IbrahimAzharArmar:应该归功于它,我只是在阅读您的答案后才注意到它! +1
  • +1 为答案。和@Brandon Braner,尽量不要在列名中使用空格()。
【解决方案2】:

您有语法错误。下面一行

$qry = $dbh->prepare('INSERT INTO contact (Name, Email Address, Message, Date) VALUES(?, ?, ?), ?');

应该是

$qry = $dbh->prepare('INSERT INTO contact (Name, Email Address, Message, Date) VALUES (?, ?, ?, ?)');

更新:

您的列名电子邮件地址包含一个空格,使用正确的引号标识符(如

)对其进行转义
INSERT INTO contact (Name, `Email Address`, Message, Date) VALUES (?, ?, ?, ?)'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-27
    • 1970-01-01
    • 2013-08-06
    相关资源
    最近更新 更多