2012-01-26 3 views
3
$artist_user_ids = implode(',',$artist_user_ids); 
$referrer = "referrer IN (?)"; 
$query = "SELECT id FROM users WHERE $referrer"; 
$con = db_connect(); 
$stmt = db_prepare($con, $query); 
bind_param('s', $artist_user_ids); 

Это не работает. Но если я изменю 1-ю строку на:php mysqli обязательная проблема с IN-кодом

$artist_user_ids = "'" . implode(',',$artist_user_ids) . "'"; 

Это работает как шарм. Что дает?

+0

возможно дубликат [Могу ли я связать несколько значений в качестве одного параметра с помощью Mysqli и PHP?] (Http: // stackoverflow.com/questions/3753295/can-i-bind-multiple-values-as-a-single-parameter-using-mysqli-and-php) –

+0

@Michael Не совсем. Мой вопрос: ** почему **? 'implode()' возвращает строку. Зачем мне указывать строку? –

+0

Поскольку предложение IN принимает несколько параметров. Чтобы связать их, они должны быть связаны как несколько параметров. Строка значений не может быть оценена по нескольким параметрам - это приведет к нарушению предоставленных параметров безопасности. –

ответ

0
SELECT id FROM users WHERE referrer IN ('val1, val2, ...'); 

но не совсем правильно .... Вы должны сделать это другим способом

Смежные вопросы