我已获得以下代码:
<?php
include 'payment/dbConfig.php';
$email = $_GET['email'];
$account = $_GET['account'];
if($email != ''){
$sql = "SELECT command FROM bots WHERE email='".$email."' AND account='".$account."' limit 1";;
$result = $db->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$value = $row["command"];
}
}
if($value != ''){
echo $value;
$sql = "UPDATE `bots` SET command='' WHERE email='".$email."' AND account='".$account."'";
$db->query($sql);
}else{
$sql = "INSERT INTO `bots`(`email`, `account`) VALUES ('".$email."','".$account."')";
$db->query($sql);
}
}
?>
这看起来确实很乱,而且这种做法并不合适
具体来说,它会无休止地将相同的'email'
和'account'
添加到数据库中,即使只有在$value
不等于空虚时才应该这样做。
我该怎么办?
答案 0 :(得分:1)
您可以用更少的代码执行此操作。
if ($result->num_rows > 0) {
// Update
$sql = "UPDATE `bots` SET command='' WHERE email='".$email."' AND account='".$account."'";
$db->query($sql);
} else {
// Insert
$sql = "INSERT INTO `bots`(`email`, `account`) VALUES ('".$email."','".$account."')";
$db->query($sql);
}
注意:您正在查询中直接传递用户输入($ _GET),Sanitize所有用户输入($ _GET,$ _POST)并在执行任何查询之前检查SQL Injection。