2009-08-03 12 views
1

sqlクエリとPHPのヘルプが必要です。SQLクエリとpreg_match

私はここでのコードの部分にあります。
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の部分をチェックした文字列は、特定の文字が含まれている場合。

ここで、この2つのコードをどのように組み合わせるのでしょうか?私はDBからデータを引き出し、特定の文字があるかどうかをチェックする方法を意味します。

ありがとうございます。

答えて

0

あなたが望むものだけを検索するのはなぜですか?

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

お問合せ、外で、あなたのコード内でフィルタする必要がある場合:

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

つのオプションが頭に浮かぶ:あなたが今やっていることですか、または実行するために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

ご返信ありがとうございます。私は最初のオプションを試してみました。 NothingNothingNothing ...文字Aを含んでいます... NothingNothing ... その理由は、私は自分のSQL部分を分離し、何らかの形で(もし可能であれば)最初の文字で1つの文字列を取得したいのです。 (preg_match( '/ A/i'、$ value)){ ... if(preg_match( '/ B/i'、$ value))次のような特定の文字列があるかどうかを確認してください: if { ... –