在数组中添加引号并将其传递给mysql数据库的最佳方法是什么

时间:2013-11-14 00:02:17

标签: php jquery mysql arrays

我总是收到警告mysqli_fetch_array()要求参数1为mysqli_result,boolean在......中给出 我猜它是因为数组项周围没有单引号。我该怎么办?任何建议使这个代码更好/更聪明/更安全(SQL注入),主要工作?我是新来的..谢谢你

这是代码“我从jquery获取json的数组”

<?php
include_once("dbconx.php");
$json = $_POST['cats'];
$json_string = stripslashes($json);
$data = json_decode($json_string, true);
echo "<pre>";
print_r($data);
$th= "";
for($i=0; $i < count($data); $i++)
   {
   $th .= $data[$i].',';
   }
   $th = rtrim($th, ",");
     echo $th;
$sql = "SELECT * FROM themes WHERE theme IN ($th)"; 
$query = mysqli_query($db_conx, $sql);
while ($row = mysqli_fetch_array($query, MYSQLI_ASSOC)) { 
}
?>

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

假设您的$data是正确的,而不是for循环,您可以这样做:

$data = "'".implode("','",$data)."'";

答案 1 :(得分:0)

只需将单引号放入:

for($i=0; $i < count($data); $i++)
{
  $th .= "'" . mysql_escape_string($data[$i]) . "',";
}

另外,我正在调用数据上的mysql_escape_string()。这需要在您使用MYSQL命令(例如来自POST或GET)的PHP代码之外的每一位数据上调用,以防止被sql注入攻击。或者,更好的是,阅读并使用参数化查询/预准备语句。