while循环不能用于访问sql记录

时间:2011-12-13 09:00:49

标签: php

我将一个字符串传递给此文件-txtname-(用空格分隔的字符串)并对每个单词进行saparate,然后将其传递给应该从数据库中获取相应单词的函数subtoken(),该函数具有两个属性 - rootwords和example,但subtoken()函数只执行一次并退出。

$counter=0; 

$string = $_REQUEST['txtname'];
$token = strtok($string, ' ');
while ($token != false)
{echo $counter;
  subtoken($token,$counter);

 $counter++;
 $token = strtok(' ');  

}


function subtoken($fname,$counter)
{
$row ="";
$result="";
$result = mysql_query('SELECT * FROM hindi WHERE rootwords LIKE  \'%:'.$fname.':%\'' );

while($row = mysql_fetch_array($result))
{
$temp=$row['rootwords'];
$token2 = strtok($temp, ':');
echo $token2 ;
while($token2!=false)
{

    echo $token2."<br/>" ;
    $token2=strtok(':');
}

}

}

mysql_close($con);

4 个答案:

答案 0 :(得分:1)

strtok的双重用法将阻止“main”循环正确处理原始$string中的所有标记。您根本无法同时使用多个“开放式”strtok

原始的嫌疑人是你的查询,它只是没有选择任何东西。尝试打印SQL语句,然后直接执行该语句(例如通过phpmyadmin)

// insert this line:
echo(
    'SELECT * FROM hindi '.
        'WHERE rootwords LIKE  \'%:'.$fname.':%\'');
// just before the actual query execution
$result = mysql_query(
    'SELECT * FROM hindi '.
        'WHERE rootwords LIKE  \'%:'.$fname.':%\'' );

根据我的经验,尽早调试尽可能多的数据,同时调试是轻松发现错误的最佳工具之一。

答案 1 :(得分:0)

另见:http://nl2.php.net/mysql_fetch_array mysql_fetch_array需要第二个参数才能正常工作。

用mysql_fetch_row替换mysql_fetch_array。如果要按名称引用列,请使用mysql_fetch_assoc。

答案 2 :(得分:0)

你可能有一些错误/警告吗? error_reporting是设置为E_ALL而display_errors设置为“On”?

答案 3 :(得分:0)

似乎strtok()只有一个指针。那么,当你在功能中结束它时,你需要重新初始化$token = strtok($string, ' ');?但我不确定。我认为如果你使用explode()函数会更好。