Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.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 使用preg_split在数据库中存储数组_Php_Mysql_Preg Split - Fatal编程技术网

Php 使用preg_split在数据库中存储数组

Php 使用preg_split在数据库中存储数组,php,mysql,preg-split,Php,Mysql,Preg Split,我有一个文本区,在这里我可以输入我想要的任意多个项目,以换行符分隔 然后,在php文件中,我有以下内容来获取值: $colors = $_POST["colors"]; foreach ( preg_split ('/[\s*,\s*]*,+[\s*,\s*]*/', $colors) as $value) { echo $value.'<br>'; } 它是这样打印的: Red Black Dark Black Blue 即,它删除了开始和结束时的所有空格,而不

我有一个文本区,在这里我可以输入我想要的任意多个项目,以换行符分隔

然后,在php文件中,我有以下内容来获取值:

$colors = $_POST["colors"];

foreach ( preg_split ('/[\s*,\s*]*,+[\s*,\s*]*/', $colors) as $value)
{

    echo $value.'<br>';

}
它是这样打印的:

Red Black Dark Black Blue 

即,它删除了开始和结束时的所有空格,而不是中间的空格(这正是我想要的)。p> 我的问题在于处理数组的方式。我希望每行打印一个元素,因此能够在数据库中每行存储一种颜色

有人能帮忙吗


非常感谢

在您的示例中,
$value
是一个字符串。如果要将数据插入阵列,需要:

$myarray[]=$value;
您可以
echo
it放在首位,这意味着它不是一个数组。因此,在您的
foreach
中添加我在上面提供的代码行。之后,您可以在foreach外部使用
print\r($myarray)
并查看数组的结构

但是根据您的代码,您可以在
foreach
中执行查询,并将您的值存储在数据库中。不需要数组

所以你可以有这样的东西:

第一条路:

<?php
$colors = $_POST["colors"];

//declare your array
$myArray=array();

foreach ( preg_split ('/[\s*,\s*]*,+[\s*,\s*]*/', $colors) as $value)
{
    //insert data inside your array
    $myArray[]=$value;

}

//output of your new array
print_r($myArray);

您提到了数组,但您的问题中没有数组。你能澄清一下这个问题吗?“也就是说,它删除了开头和结尾的所有空格”-不,它们实际上没有被删除-你现在只是在一个上下文中查看它,它不保留空格,但在显示时将其折叠为一个空格字符(也称为正常的HTML行为)。除此之外,现在还不清楚你到底想问什么。您已经有了一个循环,并且在其中您可以单独访问每个这样的“行”。所以如果你想把它写入数据库。。。你需要做的就是去做。你有什么问题吗?回答得不错。我建议让它更健壮一点。例如,您首先需要声明数组变量,以避免出现PHP通知。。。。这将是有用的OP,看看你的代码将进入他们的代码。我按照你的建议。我尽可能地分析问题。
<?php
$colors = $_POST["colors"];

//declare your array
$myArray=array();

foreach ( preg_split ('/[\s*,\s*]*,+[\s*,\s*]*/', $colors) as $value)
{
    //insert data inside your array
    $myArray[]=$value;

}

//output of your new array
print_r($myArray);
<?php
$colors = $_POST["colors"];

$servername = "my_server_name";
$username = "username";
$password = "password";
$dbname = "my_db_name";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

foreach ( preg_split ('/[\s*,\s*]*,+[\s*,\s*]*/', $colors) as $value)
{

    //$value variable holds all the info you need so you just do the INSERT QUERY inside the foreach

    $stmt = $conn->prepare("INSERT INTO my_table (my_column) VALUES (?)");
    $stmt->bind_param("s", $value);
    $stmt->execute();



}