如何从php MySQL sql注入易受攻击查询转到MySQLi不易受攻击查询

如何从php MySQL sql注入易受攻击查询转到MySQLi不易受攻击查询,php,mysql,mysqli,Php,Mysql,Mysqli,我学习MySQLi是为了使我的站点不易受到SQL注入的攻击(现在是wich),但当我试图将我的旧查询“翻译”为MySQLi语句时,我感到困惑,所以我希望你能帮我举一些例子,这样我就可以得到它。非常感谢 更新我的站点计数器 $sql = "UPDATE post SET counter = counter+1 WHERE id=".$tget; 整理我的评论 $info=mysql_query("SELECT * FROM `comments` WHERE idpost=" . $tget .

我学习MySQLi是为了使我的站点不易受到SQL注入的攻击(现在是wich),但当我试图将我的旧查询“翻译”为MySQLi语句时,我感到困惑,所以我希望你能帮我举一些例子,这样我就可以得到它。非常感谢

更新我的站点计数器

$sql = "UPDATE post SET counter = counter+1 WHERE id=".$tget;
整理我的评论

$info=mysql_query("SELECT * FROM `comments` WHERE idpost=" . $tget . " AND active=1 ORDER BY datetime DESC");
保存评论

$sql = "INSERT INTO `comments` (`id`, `idpost`, `comment`, `datetime`, `author`, `active`) VALUES (NULL, '" . addslashes($_POST['idcomment']) . "', '" . addslashes($_POST['comment']) . "', NOW(), '" . addslashes($_POST['name']) . "', '1');";
如果你能告诉我如何从这里到MySQLi,我可以用其他的查询来结束

<>和顺便说一下,如果你(<强>专家>强>)认为有其他方法来保护我比SQL MySQL更好,请告诉我。
$conn = new mysqli(…);
$sql = "UPDATE post SET counter = counter+ 1 WHERE id= ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("i", $tget);
$stmt->execute();
bind_param
的第一个参数中,使用字符串
i
s
d
b
设置参数类型:

$stmt = $conn->prepare("INSERT INTO mytable (int_column, string_column, double_column, blob_column, another_int_column VALUES (?, ?, ?, ?, ?)");
$stmt->bind_param("isdbi", $int_val, $string_val, $double_val, $blob_val, $another_int_val);
$stmt->execute();

我的经验告诉您使用带有bind_param选项的存储过程。你需要阅读这篇文章来了解更多细节


不应
$stmt->执行be
$stmt->execute()?你不应该有
$stmt->close()每次查询后?@Rocket:当然,已更新。对于
SELECT
查询,也应该有
$stmt->fetch()
,但为了简洁起见,我省略了它,因为@op想知道如何绑定。我不是专家,但还有另一种方法,叫做PDO: