【发布时间】:2017-01-20 08:53:27
【问题描述】:
我正在尝试更新 MySQL 中的一个值,以增加一个数字。假设当前值为 50,如果我在文本框中键入 50,则 mysql 值变为 100。实际上只有下面的代码使用当前文本框值更新。
function updateMaterial($code){
global $conn;
$sql = $conn->prepare("SELECT * FROM stock WHERE itemcode = '$code'");
$sql->execute();
while($row = $sql->fetch(PDO::FETCH_ASSOC)){
$this->id = $row['id'];
}
if(isset($_POST['qty'])){
$sql = $conn->prepare("UPDATE stock SET qty='qty +$this->qty' WHERE id='$this->id'");
$sql->execute();
}
}
if(isset($_POST['update'])){
$code = $_POST['itemcode'];
if($addstock->updateMaterial($code)){
return true;
}else{
return false;
}
}
【问题讨论】:
-
1.您没有为第二个查询使用准备好的语句。 2. 你根本不需要第一个查询。 3. 第二个查询的语法错误。先尝试使用静态值,然后更改为准备好的版本
-
你好。您的代码不安全。看看“Prepared Statements”是什么以及它们是如何工作的,你没有以正确的方式实现它。
-
@YourCommonSense 感谢您在我改进答案后逗留了足够长的时间以删除 DV