【问题标题】:PDO inserting into database not working [duplicate]PDO插入数据库不起作用[重复]
【发布时间】:2015-12-07 02:30:10
【问题描述】:

当我输入将插入数据库的信息时,我收到此错误:

致命错误:在非对象上调用成员函数 execute()。

问题出现在第 14 行,这是我目前的代码。

$database_file = 'sqlite:inventory.sqlite';
$mysql = new PDO($database_file);

$new_name = $_POST['Name_Item'];
$new_amount = $_POST['Amount_Item'];
$new_detail = $_POST['Description'];


$query =$mysql->prepare("INSERT INTO Items (id, Name, Amount, Detail)
VALUES (''," . $new_name . "," . $new_amount . ",". $new_detail .")");
$query->execute();
echo "testing";
echo "<TABLE>";
echo "<tr>";
echo "<td>id</td>";
echo "<td>Name</td>";
echo "<td>Amount</td>";
echo "<td>Detail</td>";
echo"</tr>";
while ($row = $query->fetch()) {
    //print_r($row);
    echo "<tr>";
    echo "<td>$row[id]</td>";
    echo "<td>$row[Name]</td>";
}

【问题讨论】:

  • 我正在尝试设计的网站涉及用户在三个文本框中输入数据,在这些文本框中,用户需要能够输入项目名称、金额和小描述。如果有必要,我可以显示我创建的 html 页面以显示我的 html 页面的外观。在我的数据库/网站的这次迭代中,安全也不是问题。
  • 你有SQL注入问题

标签: php sqlite pdo


【解决方案1】:

问题可能是您需要在名称和详细信息值周围加上引号。

这是解决问题的一种方法:

$query =$mysql->prepare("INSERT INTO Items (Name, Amount, Detail)
  VALUES (:name, :amount, :detail)");
$query->execute(['name' => $new_name, 'amount' => $new_amount, 'detail' => $new_detail]);

您也可以将名称和详细信息封装在引号中,但这不是一个好方法,因为如果其中包含引号,则会中断。

另外,在大多数情况下,id 是由数据库分配的。

【讨论】:

  • 这很好用!你能把你找到这个的链接发给我吗?
  • 我使用了Http://php.net 来帮助我,查看 PDO 文档以执行。
猜你喜欢
  • 2011-09-12
  • 2014-01-12
  • 2016-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-07
相关资源
最近更新 更多