2013-04-18 42 views
0

對於使用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

如果你想要做什麼,你爲什麼不把它們作爲整數而不是字符串傳遞? – SeanWM

+0

使用[ctype_digit()](http://php.net/manual/en/function.ctype-digit.php)函數 – 2013-04-18 19:39:54

回答

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

+0

$ tnumber的類型不是整數,因爲它的發送來自 – 2013-04-18 19:40:39

+0

@Akam檢查我的更新。 – hek2mgl

+0

謝謝,hek,is_array($ tag_no)返回'數組',是否有我缺少的東西? – user1535190