2015-12-07 4 views
-1

Когда я набираю в информации, которая будет вставлена ​​в базу данных я получаю эту ошибку:PDO вставки в базу данных не работает

Fatal error: Call to a member function execute() on a non-object.

Проблема возникает в строке 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>"; 
} 
+0

Веб-сайт, который я пытаюсь создать, включает в себя ввод данных пользователем в три текстовые поля, в этих полях пользователь должен иметь возможность вводить имя элемента, сумму и небольшое описание. Я могу показать html-страницу, которую я создал, чтобы показать, как выглядит моя html-страница, если это необходимо. ТАКЖЕ БЕЗОПАСНОСТЬ НЕ НОМЕР В ЭТОМ ИТЕРАЦИИ МОЕЙ БАЗЫ ДАННЫХ/ВЕБ-САЙТА. –

+0

У вас проблема с SQL-инъекцией – Andrew

ответ

0

Проблема, вероятно, в том, что вам нужны котировки вокруг значений имени и деталей.

Это один из способов вы могли бы решить эту проблему:

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

Можно также инкапсулировать имя и детализацию в кавычки, но это не очень хороший подход, потому что если у них есть цитаты в них ломается.

Кроме того, в большинстве случаев идентификатор присваивается базой данных.

+0

Это отлично работает! Не могли бы вы выслать мне ссылку на то, где вы ее нашли? –

+0

Я использовал Http://php.net, чтобы помочь мне, проверить документацию PDO для выполнения. – user2182349

Смежные вопросы