使用表单验证插入数组时出错

时间:2013-04-18 19:35:09

标签: php forms mysqli

我有三个关于使用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);

1 个答案:

答案 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()一起使用。)