Забыл сказать. Я же говорил - прочесть о функции 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 Обязательно читать о функциях, их назначении, параметрах и работе. В руководстве есть примеры. |
Спасибо, с этим почти разобрался. Еще такой вопрос по БД. Не получается составить запрос. Я получаю на сервере параметр и мне нужно сравнить его с БД, и если там нет такого совпадения, то добавить строку в таблицу. В таблице 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); |
Вы же учитесь, а учиться начинают с основ, сначала выучить азбуку, научится читать, писать, и т.д. Язык программирования нужно тоже начинать изучать с его основ, с синтаксиса, правил, ... Вы же этим даже не утруждаете себя. Вот так делать нельзя:
$user_n = $_POST[name]; РНР исправит за вас ошибку, но это не означает, что так он будет поступать всегда. Пришедшие извне данные сервер обязан фильтровать/проверять, а уж тем более не допустимо вставлять непосредственно данные извне как параметры в SQL запросах, это грозит sql-инъекцией. Прежде чем использовать LIKE, нужно внимательно прочесть о ней, дабы не получать запросом не то, чего хотелось. А в вашем запросе эта функция вообще не нужна, здесь требуется простое сравнение. Действия после запросов не всегда нужно завершать выходом (die), это стоит учитывать, а sql-ошибки никогда не показывать пользователю. Откройте руководство, найдите описание почему у вас ошибки, исправьте их, после это можно будет говорить как сделать лучше. И не надо это воспринимать за "отфутболивание", здесь ведь форум, а не кафедра, никто не станет вам рассказывать все, от мелких ошибок до ... Нужно самому учить такие вещи коли учитесь, и учитесь серьезно. |
Часовой пояс GMT +3, время: 04:13. |