PHP взорваться и сортировать - PullRequest
0 голосов
/ 29 мая 2018

Мне нужно отсортировать разнесенную строку для записи в базу данных.

С приведенным ниже кодом это работает, но я не смог обнаружить сводку массивов вне цикла 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')");

Ответы [ 3 ]

0 голосов
/ 29 мая 2018

Используйте 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 в вашу базу данных.Я знаю, что это может не относиться к вашей текущей работе, но лучше не использовать фактически подготовленные заявления.

так:

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

Использование Подготовленные заявления вместо этого очень настоятельно рекомендуется.

0 голосов
/ 29 мая 2018

Просто используйте конкатенацию строк.Используйте $ term1 в качестве строки в цикле for.

$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')");
0 голосов
/ 29 мая 2018

Попробуйте $sorted_terms = implode(';', $terms);

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

...