PDO в PHP: проблема в параметре привязки - PullRequest
1 голос
/ 03 июня 2011

Я хочу передать (1,2,3) это в запрос IN предложения where. как то так.

$sql = $db->prepare("
    SELECT 
        id, attribution,..........................
    FROM
        filterdaiict
    WHERE Checkbox
        IN (:checkbox)
    HAVING
        distance < :radius
    ORDER BY
        distance ASC
    LIMIT
        0, 50 
");

$sql->bindParam(
    ':checkbox',
    GetCheckboxValue ( $value['CHECKBOXLIST'] ),
    PDO::PARAM_STR 
);

, где функция GetCheckboxValue ( $value['CHECKBOXLIST'] ) возвращает строку типа 1,2,3. Этот код не работает. Я не знаю, где могут быть ошибки. Дай мне знать. Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 03 июня 2011

Этот пример основан на ответе SamT, приведенном выше, для построения строки запроса, но все еще связывает параметры.

// Get your IDs into an array
$ids = explode(',', GetCheckboxValue($value['CHECKBOXLIST']));

// Build a list of placeholders that we can use in the query
$params = array();
foreach ($ids as $idx => $val) {
     $key = ':checkbox' . $idx;
     $params[$key] = $val;
}    

// Join the keys to use as placeholders
$querystr = implode(', ', array_keys($params));

// Prepare our statement using the placeholders we made above
$sql = $db->prepare( " SELECT id, attribution,...... .................... 
    FROM filterdaiict where Checkbox IN ($querystr) 
    HAVING distance < :radius 
    ORDER BY distance ASC LIMIT 0, 50 " );

// Bind a value for each key
foreach ($params as $key => &$val) {
    $sql->bindParam(
        $key,
        $val,      
        PDO::PARAM_STR 
    );
 }
1 голос
/ 03 июня 2011

Вам придется строить, они запрашивают сами.

$ids = array(1, 2, 3);
$querystr = implode(',', $ids);

$sql = $db->prepare( " SELECT id, attribution,...... .................... 
    FROM filterdaiict where Checkbox IN ($querystr) 
    HAVING distance < :radius 
    ORDER BY distance ASC LIMIT 0, 50 " );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...