Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
每个数组值都存储到数据库| PHP中_Php_Mysql - Fatal编程技术网

每个数组值都存储到数据库| PHP中

每个数组值都存储到数据库| PHP中,php,mysql,Php,Mysql,如何使此数组每值有一行,例如 array('item1', 'item2', 'item3', 'item4'); 我希望它们分别存储一行,而不是一行。这取决于数据库表布局和插入查询。为了简单起见,可以遍历数组并插入每个字段 $sql = "INSERT INTO table_name (`column_name`) VALUES (" . implode("), (", $array) . ")"; 像那样的东西应该可以。SQL语句构造称为“扩展插入” 该方法基本上将具有特定字符的数组粘合

如何使此数组每值有一行,例如

array('item1', 'item2', 'item3', 'item4');

我希望它们分别存储一行,而不是一行。

这取决于数据库表布局和插入查询。为了简单起见,可以遍历数组并插入每个字段

$sql = "INSERT INTO table_name (`column_name`) VALUES (" . implode("), (", $array) . ")";
像那样的东西应该可以。SQL语句构造称为“扩展插入”

该方法基本上将具有特定字符的数组粘合在一起。更多信息,请参见上面的人

编辑

为了安抚群众,您应该在阵列上运行一个脚本,以确保正确转义数据,以避免错误和sql注入:即:

$array = array_filter($array, 'mysql_real_escape_string');

过滤器部分“未测试”,只是一个粗略的例子。最初被忽略的原因是没有显示实际的sql代码,我的假设是用户之前已经考虑到了这一点

您需要使用一个神奇的for循环:

$array = array('item1', 'item2', 'item3', 'item4');

foreach($array as $value){

    // insert $value into your database

}

这实际上取决于您使用的是什么数据库,或者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));
}
如果你想要更多的细节,去看看


希望有帮助

这取决于许多因素,但通常,您会创建两个表,一个表示数组(至少有一个ID列),另一个表示项(至少有两个列,一个表示数组ID和值)。所以在这种情况下,你有

Array table +----+ | ID | +----+ | 1 | +----+ 数组表 +----+ |ID| +----+ | 1 | +----+ 项目表 +----------+--------+ |数组ID |项| +----------+--------+ |1 |项目1| |1 |项目2| |1 |项目3| |1 |项目4| +----------+--------+ 这样,您就可以在每一行中拥有每一项

您还应该将数组表中的
ID
设置为主键,并将项表中的
Array ID
设置为外键,该外键链接到数组表中带有“”的
ID

您可以使用来查询此关系


希望这有帮助。

实现取决于您的db方案,请发布它……请不要忘记转义这些值,以防止SQL注入和其他讨厌的东西。 Array table +----+ | ID | +----+ | 1 | +----+ Item table +----------+--------+ | Array ID | Item | +----------+--------+ | 1 | item1 | | 1 | item2 | | 1 | item3 | | 1 | item4 | +----------+--------+