2013-06-26 16 views
0

我从表单输入的文字和图片如何将两个数组拼成一个单一字符串以插入mysql值?

正在收集两个数组
$final = array($info, $paths); 
print_r($final); 

此打印

Array ([0] => Array ([0] => '1995', [1] => 'chevrolet', [2] => 'impala', [3] => '5.7', [4] => 'bose', [5] => '165465', [6] => 'sadfasdf', [7] => '', [8] => '', [9] => 'asdfasdasdf', [10] => '', [11] => '', [12] => 'sdafasdfasd', [13] => '', [14] => '', [15] => '', [16] => '', [17] => 'asdfasdf',) [1] => Array ([0] => 'images/picture22677.png', [1] => 'images/picture22678.png', [2] => 'images/picture22679.jpg',)) 

完美! 但我怎么现在这个$final数组转换成这样

'$value', '$value', '$value', '$value', 

但出数组一个字符串键数 更好地了解我,我需要一个字符串,我可以finnaly插入MySQL的,像这样

mysql_query("INSERT INTO 
    auto(year, make, model, engine, sound_system, mileage, att1, att2, 
    att3, att4, att5, att6, att7, att8, att9, att10, att11, att12, att13, att14, att15, picture1, 
    picture2, picture3, picture4, picture5, picture6, picture7, picture8, picture9, 
    picture10, picture11, picture12) 
    VALUES 
    ($finalpaths)); 

看到VALUES ($finalpaths));这里就是我需要有数组列表转换为字符串,将在这种情况下工作

我希望你明白了我所需要的,感谢您的inpu t :)

+0

有2级阵列的目的是什么,以及如何转换到您的预期输出? – jcsanyi

回答

1

你应该做的是在PDO或mysqli中使用准备好的语句。它保护你免受sql注入,并且不推荐使用mysql_*函数。

那么你的SQL就像(我通常喜欢命名变量像:year等,但这样的工作以及):

$sql = "INSERT INTO 
    auto(year, make, model, engine, sound_system, mileage, att1, att2, 
    att3, att4, att5, att6, att7, att8, att9, att10, att11, att12, att13, att14, att15, picture1, 
    picture2, picture3, picture4, picture5, picture6, picture7, picture8, picture9, 
    picture10, picture11, picture12) 
    VALUES 
    (?, ?, ?, ..., ?, ?, ?)"; // as many question marks as variables 

和PDO你会execute(见完整的例子手册)它喜欢:

// assuming that $dbh contains your PDO database connection 
$sth = $dbh->prepare($sql); 
$sth->execute($final[0]); 
+0

哇这多复杂,我还没有在pdo中挖过很多,任何其他方式在正常的PHP呢? –

+0

@sdfasdfad与你的方式没什么不同,你避免了整个逃跑的部分。它是目前的*正常的PHP *方式:) – jeroen

+0

@sdfasdfad PDO是正常的PHP和更容易,然后mysql_ *更不用说更安全! – Prix

1

虽然prepared statements是一个更好的方式来处理这个问题,它也可以做这样的事情(假设你正在使用的mysqli_*功能)。

$items = array_merge($final[0], $final[1]); 
$safeItems = array_map($items, 'mysqli_real_escape_string'); 
$sqlString = "'" . join("', '", $safeItems) . "'"; 

我们使用array_merge()$final两个部分连接成一个阵列。或者,我们可以从这样的原始值构建:$items = array_merge($info, $paths)

我们使用array_map()调用 mysqli_real_escape_string()为了正确逃生每个值,以防止SQL注入

我们使用join()一切结合在一起成为最终的输出。

这就是说,它看起来像你实际上使用mysql_*函数。这些功能应该使用而不是有很好的理由。在这里看到更多的细节:Why shouldn't I use mysql_* functions in PHP?

+0

令人惊叹的非常感谢这个作品 –

相关问题