Как избежать точки в запросе MySQL? - PullRequest
1 голос
/ 15 декабря 2010

Значения массива $ rf содержат точку:

  $rf = array(img34563.jpg , img34536.jpg);

  $query = "SELECT * FROM $appin_table WHERE img IN ( ".implode( ',' , $rf )."";
  $result = mysql_query($query)
  or die(mysql_error());

Как я могу избежать точки, это возможно?

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 15 декабря 2010

Чтобы избежать побега, используйте подготовленное утверждение:

$rf = array('img34563.jpg', 'img34536.jpg');

$db_connection = new mysqli("localhost", "user", "pass", "db");
$statement = $db_connection->prepare("SELECT * FROM $appin_table WHERE img IN (?,?)");
$statement->bind_param("ss", $rf[0], $rf[1]);
$statement->execute();

Дополнительная информация: http://www.php.net/manual/en/mysqli.prepare.php

2 голосов
/ 15 декабря 2010

Спасение точки само по себе не поможет; вы получите такой запрос:

SELECT * FROM table WHERE img IN(img34563.jpg , img34536.jpg)

Вы должны будете применить кавычки раньше:

function quote($k)
   {
      return '"' . mysql_real_escape_string($k) . '"';
   }

$values = array_map('quote', $rf);
$query = "SELECT * FROM $appin_table WHERE img IN ( ".implode( ',' , $values )."";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...