Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Вывод элементов массива (https://javascript.ru/forum/dom-window/80538-vyvod-ehlementov-massiva.html)

laimas 19.06.2020 09:53

Забыл сказать. Я же говорил - прочесть о функции json_decode. Что пишут? А пишут о том, о чем я ранее говорил - если опущен второй параметр функции, то результатом будет не массив, а объект. К пример, пусть json будет таким и он как и у вас отправлен серверу под ключом q:

{"a":1,"b":2}


Декодируем:

$data = json_decode($_POST['q']);
//попытка вывести значение как
echo $data['a'];
//закончится фатальной ошибкой - Fatal error:  Cannot use object of type stdClass as array
//так как $data, это объект и получить можно только значения его свойств a и b
echo $data->a; //а так верно и будет выведено в браузер 1, получили значение свойства a объекта $data
//если декодировать со вторым параметром равным true (можно и 1 указать, любое значение больше 0 тоже есть true)
$data = json_decode($_POST['q'], true);
//то $data массив и вывод
echo $data['a']; //это верно, есть такой ключ в массиве, а значит получим 1


Обязательно читать о функциях, их назначении, параметрах и работе. В руководстве есть примеры.

Volun 20.06.2020 16:38

Спасибо, с этим почти разобрался. Еще такой вопрос по БД. Не получается составить запрос. Я получаю на сервере параметр и мне нужно сравнить его с БД, и если там нет такого совпадения, то добавить строку в таблицу. В таблице users есть 4 столбца
u_id u_name created updated

$servername = "";
$username = "";
$password = "";
$db = "";
$conn = new mysqli($servername, $username, $password, $db);
 
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}
 
$user_n = $_POST[name];
 
$sql = "SELECT * FROM `users` WHERE u_name like '%$user_n%'";
$result = mysqli_query($sql);
 
print($result);
 
mysqli_close($conn);

laimas 20.06.2020 17:15

Вы же учитесь, а учиться начинают с основ, сначала выучить азбуку, научится читать, писать, и т.д. Язык программирования нужно тоже начинать изучать с его основ, с синтаксиса, правил, ... Вы же этим даже не утруждаете себя. Вот так делать нельзя:

$user_n = $_POST[name];

РНР исправит за вас ошибку, но это не означает, что так он будет поступать всегда.

Пришедшие извне данные сервер обязан фильтровать/проверять, а уж тем более не допустимо вставлять непосредственно данные извне как параметры в SQL запросах, это грозит sql-инъекцией.

Прежде чем использовать LIKE, нужно внимательно прочесть о ней, дабы не получать запросом не то, чего хотелось. А в вашем запросе эта функция вообще не нужна, здесь требуется простое сравнение.

Действия после запросов не всегда нужно завершать выходом (die), это стоит учитывать, а sql-ошибки никогда не показывать пользователю.

Откройте руководство, найдите описание почему у вас ошибки, исправьте их, после это можно будет говорить как сделать лучше. И не надо это воспринимать за "отфутболивание", здесь ведь форум, а не кафедра, никто не станет вам рассказывать все, от мелких ошибок до ... Нужно самому учить такие вещи коли учитесь, и учитесь серьезно.


Часовой пояс GMT +3, время: 04:13.