我有三个关于使用mysqli的标签系统的表单验证的查询。 。转义$ tag_no数组的最佳做法是什么? 。当$ tag_no数组从表单传递时,整数作为字符串传递,所以is_int不适用于$ tnumber,任何想法? 这是验证从表单传递的标签数组的总体最佳实践。
希望这是清晰简洁的,任何帮助都会非常感激。 提前谢谢。
$tag_no = $_GET['tno'];
$tno = mysqli_real_escape_string($link, $tag_no);
if ($tag_no != false) {
$query = "INSERT INTO `uc` (`UNO`, `BNO`) VALUES ('$uno', '$box');";
foreach ($tag_no as $tnumber) {
if (is_int($tnumber)) {
$query .= "
INSERT INTO `ut` (`UNO`, `TNO`) VALUES ('$uno', '$tnumber')";
} else {
$query .= "INSERT INTO tags (TName) VALUES ('$tagname')";
}
};
};
mysqli_multi_query($link, $query);
答案 0 :(得分:0)
即使您使用mysql_multi_query()
,也必须使用';'分开单独的查询。
所以将代码更改为:
foreach ($tag_no as $tnumber) {
if (is_int($tnumber)) {
$query .= "
INSERT INTO `ut` (`UNO`, `TNO`) VALUES ('$uno', '$tnumber');"; # <-- note the ;
} else {
$query .= "INSERT INTO tags (TName) VALUES ('$tagname');"; # <-- note the ;
}
}
我也很确定,这会失败:
foreach ($tag_no as $tnumber)
因为$tag_no
实际上是一个字符串而foreach期望一个数组。 (您已将其与mysqli_real_escape_string()
一起使用。)