将数组值插入MySQL

时间:2012-07-27 02:44:25

标签: php mysql

我试图找到另一个问题但是我没有运气。我的问题基本上是......这会有效吗?

$insert_tweets = "INSERT INTO tweets (
  'id',
  'created_at',
  'from_user_id',
  'profile_image',
  'from_user',
  'from_user_name',
  'text' 
  ) VALUES (
  {$user_data[$i]["id"]},
  {$user_data[$i]["created_at"]},
  {$user_data[$i]["from_user_id"]},
  {$user_data[$i]["profile_image"]},
  {$user_data[$i]["from_user"]},
  {$user_data[$i]["from_user_name"]},
  {$user_data[$i]["text"]}
)"

        for($i=0;$i<count($user_data);$i++){
            mysqli_query($mysqli,$insert_tweets);
        }

$ user_data是一个多维数组,第一级是数字,后续级别是关联的。

此外,在插入之前,“数据库准备”/清理关联数组变量的最佳方法是什么?我没有预料到任何恶意数据,但它总是可能的。

3 个答案:

答案 0 :(得分:3)

        for($i=0;$i<count($user_data);$i++){
            $insert_tweets = "INSERT INTO tweets ('id','created_at','from_user_id','profile_image','from_user','from_user_name','text') VALUES ({$user_data[$i]["id"]},{$user_data[$i]["created_at"]},{$user_data[$i]["from_user_id"]},{$user_data[$i]["profile_image"]},{$user_data[$i]["from_user"]},{$user_data[$i]["from_user_name"]},{$user_data[$i]["text"]})";
            mysqli_query($mysqli,$insert_tweets);
        }

这应该有效

答案 1 :(得分:3)

是的,它会起作用,但最好的方法是使用PDO。

您可以在prepare语句中创建无名参数,然后传入一个数组以将值绑定到这些参数。

$data = array('val1', 'val2');
$query = $db->prepare("INSERT INTO table (col1, col2) VALUES (? , ?)");
$query->execute($data);

PDO将为您转义输入值。

这是一个关于PDO的教程,可以帮助您入门 http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/

答案 2 :(得分:1)

以下是关于清理阵列的建议:

我所做的是创建一个清理数据的基本功能:

function array_sanitize(&$item){
    $item = mysql_real_escape_string($item);
}

然后,您可以使用array_walk()使用新功能清理阵列。 (php manual refrence

通过像这样传入你的数组来消毒:

array_walk($user_data, 'array_sanitize');