Php 使用preg_split在数据库中存储数组
我有一个文本区,在这里我可以输入我想要的任意多个项目,以换行符分隔 然后,在php文件中,我有以下内容来获取值: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 即,它删除了开始和结束时的所有空格,而不
$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();
}