PHP 展开并排序

PHP explode and sort

我需要对展开的字符串进行排序以写入数据库。

下面的代码可以正常工作,但我无法检测到 foreach 循环之外的数组摘要。

所以 $terms[0].$terms[1].$terms[2] 不正确。

原因例如 $terms[0].$terms[1].$terms[2].$terms[3] 需要字符串中的 4 个术语。

如何解决?

$terms = explode(";", "banana;apple;lemon");

sort($terms);

$length = count($terms);

for($x = 0; $x < $length; $x++) {

$terms[$x] = $terms[$x].'; ';
}

$sorted_terms = $terms[0].$terms[1].$terms[2]; // <<< should changed dynamically

$sql = mysqli_query($dbcon,"INSERT INTO mydatabase (terms) VALUES ('$sorted_terms')");

尝试$sorted_terms = implode(';', $terms);

http://php.net/manual/en/function.implode.php

使用 PHP implode,它与 explode 完全相反,专用于此类事情。

$terms = explode(";", "banana;apple;lemon");
sort($terms);
$sorted_terms = implode(";", $terms);

//$sorted_terms = "apple;banana;lemon";

编辑:

当您使用程序 MySQLi 进行数据输入时,您还应该使用 mysqli_real_escape_string 来限制 SQL 注入您的数据库。我知道它可能不适用于您当前的工作,但最好的做法是进入 - 除了实际使用 Prepared Statements。

所以:

$sql = mysqli_query($dbcon,"INSERT INTO mydatabase (terms) 
       VALUES ('".mysqli_real_escape_string($dbcon, $sorted_terms)."')");

强烈建议改用 Prepared Statements

简单地使用字符串连接。 在 for 循环中使用 $terms1 作为字符串。

$terms1 = "";
$terms = explode(";", "banana;apple;lemon");
sort($terms);
$length = count($terms);
for($x = 0; $x < $length; $x++) {
$terms1 .= $terms[$x].'; ';
}

//$sorted_terms = $terms[0].$terms[1].$terms[2];
//$sql = mysqli_query($dbcon,"INSERT INTO mydatabase (terms) VALUES ('$sorted_terms')");
$sql = mysqli_query($dbcon,"INSERT INTO mydatabase (terms) VALUES ('$terms1')");