Php 插入带有表单验证的数组时出错

Php 插入带有表单验证的数组时出错,php,forms,mysqli,Php,Forms,Mysqli,对于使用mysqli的标记系统的表单验证,我有三个疑问。 .逃逸$tag_no数组的最佳做法是什么。 。当$tag_没有数组从表单传递时,整数作为字符串传递,因此is_int将不能与$tnumber一起使用,有什么想法吗? 。这是验证从表单传递的标记数组的总体最佳实践 希望这是明确和简洁,任何帮助将不胜感激。 提前谢谢 $tag_no = $_GET['tno']; $tno = mysqli_real_escape_string($link, $tag_no); if ($tag_no !=

对于使用mysqli的标记系统的表单验证,我有三个疑问。 .逃逸$tag_no数组的最佳做法是什么。 。当$tag_没有数组从表单传递时,整数作为字符串传递,因此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);
即使你使用,你也必须使用“;”要分离独立查询,请执行以下操作

因此,请将代码更改为:

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 ;
    }
 }

因为
$tag\u no
实际上是一个字符串,foreach需要一个数组。(您已经将它与
mysqli\u real\u escape\u string()
一起使用过)

即使是本地语法的highlighter也会告诉您缺少引号。这是你发布的真实代码吗?如果你想这样做,为什么不将它们作为整数而不是字符串传递呢?使用函数$tnumber的类型不是整数,因为它是从以下地址发送的谢谢,hek,Is_array($tag_no)返回“array”,我缺少什么吗?
Is_array($tag_no)
将永远不会返回
'array'
。它将返回
TRUE
FALSE
抱歉,它返回的是'TRUE',我不是字面上的数组。请注意,您不能将数组传递给
mysqli\u real\u escape\u string()
。你必须先解决这个问题
 foreach ($tag_no as $tnumber)