0

我从文本和图像的表单输入中收集了两个数组

$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',

但是没有数组键号来更好地理解我,我需要一个字符串,我可以像这样最终插入 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));此处是我需要将数组列表转换为在这种情况下可以使用的字符串的地方

我希望你明白我的需要,感谢任何输入:)

4

2 回答 2

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]);
于 2013-06-26T00:29:38.193 回答
1

虽然准备好的语句是处理此问题的更好方法,但也可以执行类似的操作(假设您正在使用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()to mysqli_real_escape_string()来正确地转义每个值以防止 SQL 注入

我们使用join()将所有内容组合到最终输出中。

话虽如此,看起来您实际上正在使用这些mysql_*功能。应该使用这些功能有很好的理由。有关详细信息,请参见此处:为什么我不应该在 PHP 中使用 mysql_* 函数?

于 2013-06-26T00:51:44.720 回答