3

データベース配列から取得した段落を個別の単語に分解しようとしています。現在、explode() が 2 つのパラメーターを予期しているというエラーが発生しているため、これは正しい方法ですか? $row 配列を取得してはなりません。

function words() {
        $query = mysql_query("SELECT text FROM table WHERE textID = 1");
        while($row = mysql_fetch_array($query)) {
            $e[] = explode(" ", $row);
            foreach($e as $r) {
                echo $r;
            }
        }
    }
4

4 に答える 4

3
function words() {
        $query = mysql_query("SELECT text FROM table WHERE textID = 1");
        while($row = mysql_fetch_array($query)) {
            $e[] = explode(" ", $row[0]);
            foreach($e as $r) {
                echo $r;
            }
        }
    }

$行は配列です。分解する最初のエレメントを選択してください。Explodeのドキュメントを読んでください。

于 2012-04-29T10:10:27.827 に答える
0
function words() { 
        $query = mysql_query("SELECT text FROM table WHERE textID = 1"); 
        while($row = mysql_fetch_array($query)) { 
            $e[] = explode(" ", $row[0]); 
            foreach($e as $r) { 
                echo $r; 
            } 
        } 
    } 
于 2012-04-29T10:29:52.503 に答える
0

ここで間違った関数アーキテクチャを使用しています。
機能はまったく必要ありませんwords()explodeで十分です。
mysql からデータを取得する関数が強く必要ですが、これは明らかに爆発のニーズとは関係ありません。
また、関数は出力を行うべきではなく、値のみを返す必要があることに注意してください (出力のみを目的とした関数は保存してください)。

したがって、関数は次のようになります

function dbgetvar($query){
  $res = mysql_query($query);
  if (!$res) {
    trigger_error("dbget: ".mysql_error()." in ".$query);
    return FALSE;
  }
  $row = mysql_fetch_row($res);
  if (!$row) return NULL;
  return $row[0];
}

そして、あなたのコードは次のように単純になります

$text  = dbgetvar("SELECT text FROM table WHERE textID = 1");
$words = explode(" ",$text);
foreach ($words as $w) echo $w;
于 2012-04-29T10:39:45.303 に答える
-1
function words() {
        $query = mysql_query("SELECT text FROM table WHERE textID = 1");
        while($row = mysql_fetch_array($query)) {
            $e = explode(" ", $row);
            foreach($e[0] as $r) {
                echo $r;
            }
            }
    }

$row にはフィールド値が完全に入力されるため、$e[0] は適切な変数です。

于 2012-04-29T10:44:47.047 に答える