SQL-запрос и preg_match - PullRequest
       9

SQL-запрос и preg_match

1 голос
/ 04 августа 2009

Нужна ваша помощь с SQL-запросом и php.

У меня есть кусочки кода здесь:
1.

$sql = "SELECT SUBSTR(n.`title`, 1,1) FROM node n WHERE n.`type` = 'type1'";
$results = db_query($sql);
while ($fields = db_fetch_array($results)) {
  foreach($fields as $key => $value) {
    echo $value;
  }
}

Приведенный выше код возвращает первые буквы названий моих статей (таблица - узел, столбцы - тип, заголовок), например: NHDKFLF ...

2

if (preg_match ('/A/i', $string)) {
  echo ('Contains letter A'); //
}
else {
  echo ('Nothing'); //
}    

А вторая часть проверяет, содержит ли строка определенные буквы.

Теперь вопрос в том, как объединить эти две части кода? Я имею в виду, как вытащить данные из БД и проверить, есть ли у них определенные буквы.

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

Ответы [ 2 ]

1 голос
/ 04 августа 2009

На ум приходят два варианта: делать то, что вы делаете сейчас, или переписать SQL, чтобы сделать оба сразу.

Вариант 1:

$sql = "SELECT SUBSTR(n.`title`, 1,1) FROM node n WHERE n.`type` = 'type1'";
$results = db_query($sql);
while ($fields = db_fetch_array($results)) {
  foreach($fields as $key => $value) {
    if (preg_match ('/A/i', $value)) {
       echo ('Contains letter A'); //
    } else {
       echo ('Nothing'); //
    }
  }
}

Вариант 2:

$sql = "SELECT SUBSTR(n.`title`, 1,1) FROM node n WHERE n.`type` = 'type1' AND SUBSTR(n.`title`, 1,1) = 'A' ";

В зависимости от остальных деталей вашего проекта, возможно, есть лучший способ справиться с этим.

0 голосов
/ 04 августа 2009

Почему бы вам просто не запросить те, которые вы хотите?

... where SUBSTR(n.`title`, 1,1) = 'A' ...

Если вам необходимо отфильтровать свой код вне запроса, то:

foreach($fields as $key => $value) {
    if (preg_match ('/A/i', $value)) {
        ...
}
...