PDO中的fetchall错误

时间:2018-04-25 14:48:16

标签: prepared-statement fetchall

我试图编写代码以将新项目插入数据库。

if(isset($_POST['btnAddVeg'])){

$addVegType = $_POST['txtAddVegType'];
$AddVegName = $_POST['txtAddVegName'];

$insertQuery = 'insert into vegetables (vegetable_type, vegetable_id)     values ("$addVegType", "$AddVegName")';

$statement2 = $db->prepare($insertQuery);
$statement2->execute();
$results2 = $statement2->fetchAll();
$statement2->closeCursor();
foreach($results2 as $result2){

echo "<table border = '0'><th>ID</th><th>Type</th><th>Name</th>    <tr><td>".$result2['vegetable_id'].'</td>';
echo "<td>".$result2['vegetable_type'].'</td>';
echo "<td>".$result2['vegetable_name'].'</td></tr></table>';

}

我收到此错误:

致命错误:未捕获PDOException:SQLSTATE [HY000]:在/vvvvvvvvvvvvvvvvvvvvvvvvvvvvvv/task9.php(54一般错误):PDOStatement-&GT;使用fetchall()#1 {主}抛出vvvvvvvvvvv / task9.php线路54上< / p>

可能很荒谬,但我错过了什么?

谢谢

1 个答案:

答案 0 :(得分:0)

执行INSERT语句不会返回结果集对象。

只需删除执行statement2->fetchAll

的行

删除引用$results2

的行

如果我们执行SELECT语句,我们需要返回一个结果集(一组行)。

同样重要的是要指出:代码容易受到SQL注入攻击。

https://xkcd.com/327/

https://www.owasp.org/index.php/SQL_Injection