这是产生错误的代码:
$sql = 'INSERT INTO pedidos (pagado, instalado) VALUES ("'.$_POST['email'].'", "'.$_POST['b'].'") WHERE email="'.$_POST['2'].'"';
$stm = $conn->prepare($sql);
$conn->exec($stm);
答案 0 :(得分:1)
这不是使用准备和执行的正确方法。创建它的原因是,您不需要将逻辑和数据放在一起,并使自己面临SQL注入攻击的风险。
$sql = 'INSERT INTO pedidos (pagado, instalado) VALUES (:pagado, :instalado)';
$stm = $conn->prepare($sql);
$stm->bindParam(':pagado', $_POST['email']);
$stm->bindParam(':instalado', $_POST['b']);
$stm->execute();
在INSERT查询中放置WHERE也没有意义。您已经在表格中插入了数据。
但是,如果您根据其他数据更新数据,则应使用UPDATE查询。
UPDATE pedidos SET pagado=?, instalado=? WHERE email=?
这方面的一个例子是:
$sql = 'UPDATE pedidos SET pagado=:padago, instalado=:instalado WHERE email=:email';
$stm = $conn->prepare($sql);
$stm->bindParam(':pagado', $_POST['email']);
$stm->bindParam(':instalado', $_POST['b']);
$stm->bindParam(':email', $_POST['2']);
$stm->execute();
答案 1 :(得分:0)
更新 - 2:
$sql = 'INSERT INTO pedidos SET pagado = ?, instalado = ? WHERE email = ?';
$stm = $conn->prepare($sql);
$stm->bindParam(1,$_POST['email']);
$stm->bindParam(2,$_POST['b'] );
$stm->bindParam(3,$_POST['2'] );
$stm->execute(); // here your code generate error
原因:您将$stm
放入execute()
,这会导致错误。