我将一个字符串传递给此文件-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);
答案 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()函数会更好。