Php PDO插入数据库不工作

Php PDO插入数据库不工作,php,sqlite,pdo,Php,Sqlite,Pdo,当我键入将插入数据库的信息时,我收到以下错误: 致命错误:对非对象调用成员函数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

当我键入将插入数据库的信息时,我收到以下错误:

致命错误:对非对象调用成员函数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>";
}
$database_file='sqlite:inventory.sqlite';
$mysql=newpdo($database_file);
$new\u name=$\u POST['name\u Item'];
$new\u amount=$\u POST['amount\u Item'];
$new_detail=$_POST['Description'];
$query=$mysql->prepare(“插入到项目中(id、名称、金额、详细信息))
值(“”、“$new\u name.”、“$new\u amount.”、“$new\u detail.”);
$query->execute();
回声“测试”;
回声“;
回声“;
回声“id”;
呼应“姓名”;
回应“数量”;
呼应“细节”;
回声“;
而($row=$query->fetch()){
//打印(行);
回声“;
回显“$row[id]”;
回显“$行[名称]”;
}

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

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

$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是由数据库分配的。

我正在尝试设计的网站涉及用户将数据输入三个文本框,在这些框中,用户需要能够输入项目名称、数量和小说明。如果有必要,我可以显示我创建的html页面,以显示我的html页面的外观。另外,在我的数据库/网站的这个迭代中,安全不是一个问题。你有一个SQL注入问题。这非常有效!你能把你在哪里找到这个的链接发给我吗?我曾经帮助过我,检查PDO文档以获取执行。