2010-02-12 78 views
0

我越来越可怕的PHP错误
对MySQL查询可怕的PHP T_STRING错误返回的资源

解析错误:语法错误,意想不到的T_STRING在/路径/到/于行/文件14

下面是代码:

function getSomeList($userid) { 

    $query = "SELECT list_id, username_id FROM user_list WHERE username_id = 1"; 

    $result = mysql_query($query, $this->db); 
    if (! $result) { 
     $message = "Bad Query: getUserSiteList(): " . mysql_error() . "<br>"; 
     $message .= "Query: " . $query; 
     die($message); 
    } 
    $num = mysql_num_rows($result); 
    echo "Number of Rows Found " . $num . "!!<br>"; 
    echo get_resource_type($result) . "<br>"; 
    if ($num > 0) { 
     echo "No rows found, nothing to print so am exiting<br>"; 
    } 

    ... more code ... 

    } 

所以一切正常,直到“如果”,我使用$ num变量声明。 $ result变量是一个mysql结果。此外,无论何时我使用$ result资源,我都会收到此错误。例如后来,当我试图访问使用该呼叫数据的一排功能:

while ($row = mysql_fetch_assoc($result)) { ... more code ... 

它的错误出具有相同T_STRING错误,(这是去掉后,如果上面显示的语句)。 我无论如何,任何人有任何建议,我的错误是?我个人觉得它与mysql查询返回的资源有关。有什么不对劲。

感谢您的帮助。当你在它是不是想成为一个地方的字符串

PS我使用PHP 5.3.0和MySQL 5.1在OS X上

+1

查看'$ result'的'var_dump'和'$ num' – 2010-02-12 16:44:05

+0

对于上下文 - 第14行是否指向您提供的示例代码? – thetaiko 2010-02-12 16:47:07

+0

要回答thetaiko,是的,错误中的行是指提供的代码中的正确行。 – bkoch 2010-02-12 16:51:00

回答

0

问题不在我的代码中。有一些隐藏的字符导致问题(不^ M,一切都在OS X上开发,并在同一系统上运行)。我复制并粘贴了我原始函数和其他被调用函数的所有行,以创建一个简单的MySQL连接和查询,但仍然出现错误。这里的关键是我复制和粘贴。所以原始源文件中的任何奇怪字符都被移动了。 我创建了第二个文件进行测试,并确认它像第一个文件一样被破坏。我完全删除了违规行并重新输入。一切工作。我对2个文件做了差异,这是输出。

$ diff testquery.php testquery_same.php 
11,14c11,14 
< 
<  if ($result) { 
<   echo "No rows found, nothing to print so am exiting<br>"; 
<  } 
--- 
>  
>  if ($result) { 
>   echo "No rows found, nothing to print so am exiting<br>"; 
>  } 
16c16 


正如你可以看到有不同的东西,但我不知道是什么。所以问题解决了,我不确定原因,但我需要继续前进。
感谢您的回复。

+0

我在长时间编码PHP时遇到了这个问题。无论在Windows还是OS X上,我都尽我所能去解决它,但最近我不得不重新编写几乎所有的if语句。这是超级讨厌,我不知道该怎么做。现在几乎要放弃PHP。使用崇高文本。 – Mattis 2014-03-15 00:29:01

2

unexpected T_STRING错误发生。这可能是因为你忘记连接某些东西,或者忘记在一行之后放置一个分号。

AKA:这是您的代码的复合的问题,而不是它的执行

您提供的代码似乎没有问题,正如您所说的那样,将该行取出似乎并不能解决问题。

也许它在别的地方?通常问题与以上的行有关。我的猜测是,上面那条语句没有正确的分号,或者某种程度上在语法上是不正确的。

+0

最后我会写一些很长的问题,解释PHP错误消息.... – 2010-02-12 16:48:51

+0

上面的代码示例失败,出现错误,并且是我的工作代码的精简版本。我已经经历了寻找连接和非终止线路的正常问题,并且看不清问题所在。我希望StackTrace可以在提供的代码中发现错误。我提到了while语句,只是指出这个问题似乎与mysql_query函数返回的资源有关。但问题应该在提供的代码中,除非它在功能之外。这些类型的错误是否可以从外部代码块中继承? – bkoch 2010-02-12 16:57:28

+0

我不相信它可以继续,因为如果你试图声明一个具有不良代码的函数,你会得到一个'Unexpected T_FUNCTION'错误。 – 2010-02-12 17:08:33