2015-05-04 140 views
-1

我正在试验存储过程返回给我一个递归父列表。 但不是返回给我一个结果,就像在PhpMyAdmin中一样,mysql_query只是返回一个布尔值true。PHP的mysql_query返回TRUE的SELECT

mysql_query("DROP FUNCTION IF EXISTS `GetAncestry`") or die(mysql_error()); 

$sql = "[CREATE SQL FUNCTION THAT LOOPS TO RETURN A STRING CONTAINING A COMMA DELIMITED STRING OF ID's]"; 

mysql_query($sql) or die(mysql_error()); 

$sql = "SELECT SubProcessID,GetAncestry(SubProcessID) as parents from prodsubprocess where SubProcessID = {$processID}"; 

mysql_query($sql) //<--- Returns TRUE, but in PhpMyAdmin returns 7,6,8 
+0

你是说... PhpMyAdmin返回预期的数据集,对吗?但函数mysql_query返回true,但没有数据集,对吧?编辑:好吧,我现在明白,你更新了你的问题,让我检查 – JuanBonnett

+0

@JuanBonnett是的,我期望检索数据使用'mysql_fetch_array',但相反,我得到的是一个布尔值。 –

+1

停止使用depidcated'mysql_ *'API。在准备好的语句中使用'mysqli_'或'PDO'。 – Jens

回答

4

documentation:

对于SELECTSHOWDESCRIBEEXPLAIN等语句 返回resultsetmysql_query()成功返回, 或FALSE在错误的资源。

您需要使用mysql_fetch_assoc为目的,

$result = mysql_query($sql); 
while ($row = mysql_fetch_assoc($result)) { 
    //fetch result 
} 

注:mysql_*被depricated;请使用PDO()准备语句的数据库查询

+0

如果您使用文档 – Jens

+0

中的部分文本,则应该添加引用。我不明白为什么这是可接受的答案。它似乎没有显示问题的解决方案。如果'mysql_query'返回'TRUE',这是如何改变的?就我个人而言,我必须使用我无法控制的服务器。我对系统管理员没有任何影响,并且未启用pdo_mysql和mysqli扩展。我必须使用mysql_ *函数,这不能回答我的问题。我已经在使用'mysql_fetch_assoc',这样做时,我得到一个警告,提示参数是一个布尔值。尽管做了一个SELECT语句,但我确认它是'TRUE'。 –

+0

它也是OP要的结果集 – Tushar

1

我必须注意的第一件事就是:不要再使用mysql_,去mysqli_。

您还想使用准备好的语句。

在phpmyadmin上,它会自动返回所有结果,因为这是它被编码的方式。如果你只是简单地执行查询,它告诉你的是它是否被成功执行,在这种情况下,因为它是TRUE,所以它正在工作。

你想在这种情况下,做的是:

$result = mysql_query($sql); 

while($row = mysql_fetch_assoc($result)){ 
    print_r($row); 
} 

但严重的是,退房准备语句。有很多关于php.net的信息,只需看看这里:http://php.net/manual/en/mysqli.prepare.php

“范例”区域为您提供了大量基本信息。

2

如你的int documentation看到:

对于其他类型的SQL语句,INSERT,UPDATE,DELETE,DROP等, 的mysql_query的()在成功时返回TRUE或在错误时返回FALSE。

对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他返回的语句 resultset,mysql_query()返回成功的资源,或者FALSE的 错误。

您必须输入cal mysql_fetch_assoc才能获取值。

停止使用deprcated mysql_ * API。在准备好的语句中使用mysqli_或PDO

0

在Phpmyadmin中,您将自动获得该存储过程的结果。但在php级别,它会给你结果状态为TRUE或FALSE。如果您想在PHP级别看到结果,那么您必须使用loping构造来循环返回的数据库资源以获取每个值。

这里是通过循环获取数据的代码。

// Code goes Here. 
while($row = mysql_fetch_assoc($sql)) 
{ 
    print_r($row); 
}