2012-04-29 128 views
3

我想从数据库数组中检索一个段落为单独的单词。这是正确的方式去做,因为它正在给出一个错误,说explode()需要2个参数,所以它不能拿起$ row数组。爆炸数据库数组PHP

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

回答

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

+0

我错过了那部分。非常感谢你。 – ashley 2012-04-29 10:53:32

+1

对于downvoters,我的回答有什么问题? – 2012-04-29 11:02:27

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

mysql_fetch_assoc将返回给你的数组与“文本”字段 – 2012-04-29 10:30:41

+0

哎呀没有注意到,他正在使用mysql_fetch_array。 – Lock 2012-04-29 10:34:58

0

您在这里使用错误的功能架构。
根本不需要words()函数。 explode就够了。
虽然你非常需要一个函数来从mysql获取数据,这显然与爆炸需求无关。
另请注意,函数不应该执行任何输出,而只能使用retirn值(除了仅用于输出的函数外)。

因此,该功能可

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

的$行那样简单与因此字段值$ê完全填充[0]是正确的变量。