PHP中的数组数据库拆分

3

我试图将从数据库数组检索的段落分解为单独的单词。我这样做的方式正确吗?因为它目前会出现错误,指出explode()需要两个参数,所以它可能没有获取到$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个回答

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;
            }
        }
    }

$row是一个数组。选择第一个元素进行拆分。阅读explode函数的文档。


我错过了那部分。非常感谢。 - ashley

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; 
            } 
        } 
    } 

mysql_fetch_assoc会返回一个带有“text”字段的数组。 - Denis Ermolin
哎呀,没注意到他在使用mysql_fetch_array。 - Lock

0

你在这里使用了错误的函数架构。
你根本不需要words()函数,explode就足够了。
而你强烈需要一个从mysql获取数据的函数,这显然与你的explode需求无关。
此外,请注意函数永远不应该输出任何内容,只返回值(除了专门用于输出的函数)。

因此,该函数可以是:

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;

-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]是正确的变量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接