我试图找到另一个问题但是我没有运气。我的问题基本上是......这会有效吗?
$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是一个多维数组,第一级是数字,后续级别是关联的。
此外,在插入之前,“数据库准备”/清理关联数组变量的最佳方法是什么?我没有预料到任何恶意数据,但它总是可能的。
答案 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');