[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ajax + php + sql запрос, не работает связка
arbuzmaster
Помогите пожалуйста, не знаю как побороть
Пытаюсь из JavaScript отправить такой запрос

var dev_newid_str=dev_newid_arr.join(","); //тут получаю строку из массива - 5,6
$.ajax( { type: "GET", url: "php/play_radio_on_dev.php", data: {'newid':dev_newid_str,'radio_id':number_stantion},beforeSend: function()
{

//$("#cpl_radio").html('<div class="img4"><img src="images/loader.gif" alt="" class="img3"></div>');

}, success: function(msg)
{
//тут код обработчика ответа
}

в play_radio_on_dev.php следующее
 
$newid_str=$_GET['newid'];
$devices_qr = mysqli_query($link,"SELECT * FROM `multimedia_devices` WHERE `remote`='dlna' AND `newid` IN ('".urldecode($newid_str)."')");
потому что запятые в url не применяются в чистом виде.
Так вот проблема в том, что sql запрос срабатывает только на первое число из $newid_str, я предполагаю, что проблема в кодировке так как url который отправляет ajax такого вида
php/play_radio_on_dev.php?newid=5%2C6&radio_id=2
но urldecode не помогает, как с этим бороться?

_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
AllesKlar
делаешь
echo $devices_qr;
до тех пор, пока не получишь корректный запрос.
Там все видно будет.
У тебя в конструкцию IN передается не список, а строка. Одна строка.

_____________
[продано копирайтерам]
arbuzmaster
AllesKlar А как избавиться от этого? IN ('1,2,5')
должно же быть так IN (1,2,5)

_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
arbuzmaster
Может кому пригодится - можно сделать например так:

$newid_str="IN (".$_GET['newid'].")";
$devices_qr = mysqli_query($link,"SELECT * FROM `multimedia_devices` WHERE `remote`='dlna' AND `newid` ".$newid_str."");


_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
waldicom
Не, так делать не рекомендуется, потому что доверять данным от пользователя не очень хорошо. Даже вообще не хорошо. Даже нельзя.

_____________
Свои мозги еще никто не отменял.
Телепатов нету.
AllesKlar
Цитата (arbuzmaster @ 5.01.2016 - 23:47)
AllesKlar А как избавиться от этого? IN ('1,2,5')
должно же быть так IN (1,2,5)

если значения гарантировано целочисленные, то так:

$in = '';
foreach(explode(',',$_GET['newid']) as $val) {
$in .= (int)$val . ',';
}

$in = rtrim($in, ',');

$query = ".... AND `newid` IN (" . $in . ")";


Цикл можно оптимизировать на предмет повторяющихся / пустых / невалидных значений.

_____________
[продано копирайтерам]
arbuzmaster
AllesKlar Спасибо большое - это работает, как нужно!

_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.