@Ciantic Спасибо за эту дополнительную информацию, я только что переключился на нативно подготовленные утверждения, когда столкнулся с этим :)

вязать мой параметр, если он появляется несколько раз в запросе, как показано ниже?

$STH = $DBH->prepare("SELECT * FROM $table WHERE firstname LIKE :string OR lastname LIKE :string");

$STH->bindValue(':string', '%'.$string.'%', PDO::PARAM_STR);
$result = $STH->execute();

Ответы на вопрос(1)

Решение Вопроса

pare, но вы предоставляете значение только для первого параметра (в этом и была ошибка).

Не совсем уверен, как PDO внутренне решил проблему с именем одного и того же параметра, но вы всегда можете избежать этого

Два возможных решения:

$sql = "select * from $table ".
       "where "
       "first_name like concat('%', :fname, '%') or ".
       "last_name  like concat('%', :lname, '%')";
$stmt= $DBH->prepare($sql);
$stmt->bindValue(':fname', $string, PDO::PARAM_STR);
$stmt->bindValue(':lname', $string, PDO::PARAM_STR);
$sql = "select * from $table ".
       "where "
       "first_name like concat('%', ?, '%') or ".
       "last_name  like concat('%', ?, '%')";
$stmt= $DBH->prepare($sql);
$stmt->bindValue(1, $string, PDO::PARAM_STR);
$stmt->bindValue(2, $string, PDO::PARAM_STR);

Между прочим, у существующего способа все еще есть проблемы внедрения SQL.

 Helmut03 авг. 2012 г., 13:41
@ajreal: просто небольшая вещь: вам не хватает. (точка) между"where " а также"first_name..."
 Ciantic30 нояб. 2012 г., 14:16
Эта проблема существуеттолько при использовании собственных подготовленных операторов, Эмулируемые PDO могут обрабатывать регистр с именем несколько раз. Чтобы включить или отключить собственные операторы, можно использовать$PDO->setAttribute(PDO::ATTR_EMULATE_PREPARES, false).
 ajreal17 янв. 2011 г., 07:48
потому что вы включили все в полный sql, в то время как вы должны привязать точное значение только для поиска, как в примере
 Ja͢ck07 дек. 2012 г., 03:58
@Ciantic Спасибо за эту дополнительную информацию, я только что переключился на нативно подготовленные утверждения, когда столкнулся с этим :)
 bart17 янв. 2011 г., 07:19
Спасибо, почему мой путь все еще чувствителен к инъекциям?

Ваш ответ на вопрос