如何让这个数组每个值有一行,例如
array('item1', 'item2', 'item3', 'item4');
我希望它们分别存储在一行中,而不是一行存储。
答案 0 :(得分:3)
$sql = "INSERT INTO table_name (`column_name`) VALUES (" . implode("), (", $array) . ")";
这样的事情应该这样做。 SQL语句构造称为“扩展插入”。
implode()方法基本上将具有特定字符的数组粘合在一起。有关更多信息,请参阅其中的人。
修改强>
为了安抚群众,你应该在数组上运行array_filter以确保数据被正确转义以避免错误和SQL注入:IE:
$array = array_filter($array, 'mysql_real_escape_string');
过滤器部分是“未经测试的”,只是一个粗略的例子。它最初被遗漏的原因是没有显示实际的sql代码,我的假设是用户之前考虑过这一点。
答案 1 :(得分:1)
这实际上取决于您使用的数据库,或者您的PHP安装上是否有PDO。
如果你有PDO,它看起来像这样:
//connection details
$driver = "mysql";
$host = "127.0.0.1";
$database = "my_database";
$username = "username";
$password = "password";
//connect to the DB
$pdo = new PDO("$driver:host=$host;dbname=$database",$username,$password);
//gather your data
$data = array('item1','item2','item3','item4');
//prepare the sql statement
$sql = "INSERT INTO `table_name` (`column_name`) VALUES (?)";
$stmt = $pdo->prepare($sql);
//iterate over your array
foreach ($data as $d) {
//run the query, passing the data item, which gets passed to the prepared statement
$success = $stmt->execute(array($d));
}
如果您想了解更多细节,请查看the PHP manual。
希望有所帮助!
答案 2 :(得分:0)
这一切都取决于数据库表布局和插入查询。为简单起见,您可以遍历数组并插入每个字段。
答案 3 :(得分:0)
你需要使用一个神奇的for循环:
$array = array('item1', 'item2', 'item3', 'item4');
foreach($array as $value){
// insert $value into your database
}
答案 4 :(得分:0)
$statement = $db_connection->prepare("INSERT INTO YOURTABLE(yourColumn) Values(?)");
foreach($your_array as $val){
$statement->bind_param("s", $val);
$statement->execute();
}
答案 5 :(得分:0)
这取决于许多事情,但通常情况下,您创建两个表来表示数组(至少有一个ID列),另一个表用于item(至少有两列,一个用于数组ID和值)。所以在这种情况下,你有。
Array table +----+ | ID | +----+ | 1 | +----+
Item table +----------+--------+ | Array ID | Item | +----------+--------+ | 1 | item1 | | 1 | item2 | | 1 | item3 | | 1 | item4 | +----------+--------+
这样,每行中都有每个项目。
您还应该将Array表中的ID
设置为主键,并将Item表中的Array ID
设置为与“ON DELETE CASCADE”数组表中链接到ID
的外键。
您可以使用left outer join来查询此关系。
希望这有帮助。