【问题标题】:PDO Connection and InsertPDO 连接和插入
【发布时间】:2012-11-28 13:50:01
【问题描述】:

我是使用 PDO 的新手,我不知道它有什么问题。它说我有这个错误 解析错误:语法错误,意外的 T_ENCAPSED_AND_WHITESPACE,期望第 3 行出现 T_STRING 或 T_VARIABLE 或 T_NUM_STRING 这是我的代码。

<?php
include 'dbconnect.php';
$sql = "INSERT INTO event (name,location,admission,map,additional,featured,description)    VALUES (:name,:location,:admission,:map,:additional,:featured,:description)";
$q = $conn->prepare($sql);
$q->execute(array(':name'=>$_POST['name'],
      ':location'=>$_POST['location'],
      ':admission'=>$_POST['addmission'],
      ':map'=>$_POST['map'],
      ':additional'=>$_POST['additional'],
      ':featured'=>$_POST['featured'],
      ':description'=>$_POST['description']));
?>

【问题讨论】:

  • 你为什么要引用$_POST 变量?
  • 你为什么用双引号括起你的 POST 变量?这是完全没有必要的。另外,您可以发布包含的内容吗?

标签: php mysql select insert pdo


【解决方案1】:

从所有这些$_POST 变量中删除双引号。不需要引用它们,如果你还引用它们的数组键,确实会造成伤害。

$name= $_POST['name'];
$location =  $_POST['location'];
$admission =    $_POST['admission'];
$map =   $_POST['map'];
$additional  =  $_POST['additional'];
$featured  =  $_POST['feature'];
$description =   $_POST['description'];

在双引号字符串中,如果引用数组键,则不能引用键,或者将整个内容包围在{} 中。但两者都在这里是不必要的。

echo "In a double quoted string, you can use $array[keys] unquoted, or surround quoted {$array['keys']} in {}";
// But this is a syntax error! (like you are getting)
echo "Don't quote the $array['keys'] if inside a double quote string, not wrapped in {}";

事实上,根本没有必要将它们分配给变量。只需在execute() 调用中直接使用$_POST 输入即可。

$q->execute(array(':name'=>$_POST['name'],
          ':location'=>$_POST['location'],
          ':admission'=>$_POST['addmission'],
          ':map'=>$_POST['map'],
          ':additional'=>$_POST['additional'],
          ':featured'=>$_POST['featured'],
          ':description'=>$_POST['description']));

【讨论】:

  • 好的,我更改了上面的所有内容,但仍然出现错误,我需要数组吗?是否需要更改值?
  • 好的,我编辑了我的代码,但数据仍然没有进入我的数据库
  • @maxgee 然后你需要检查 PDO 的 errorInfo() php.net/manual/en/pdo.errorinfo.php 你确定你的连接是正确建立的吗?
  • 我还看到$_POST['admission'] 拼写错误,尽管这会导致空值(除非该列不允许空值),而不是查询失败。
【解决方案2】:

该错误可能是指在 $_POST 变量周围使用了双引号。

错误是第 3 行的语法,似乎与此问题的标题无关。

$name = $_POST['name'];

至于 PDO,您必须在包含的 dbconnect.php 文件中包含此类代码,因为问题中看不到与 PDO 相关的代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 2016-06-13
    • 2010-11-25
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    相关资源
    最近更新 更多