2015-02-12 100 views
-4

我想从MySQL数据库获取所有数据,但我想知道为什么它不工作,我错过了什么吗? 这是代码:如何从数据库中获取所有数据?

$tid=$_SESSION['id']; 
$a=mysql_query("select * from tbl_curriculum_sched where TEACHER_ID='$tid'");   

while($ad=mysql_fetch_array($a)){ 
    $sql= mysql_query("SELECT * from enrolled where CURRICULUM_SCHED_ID='$ad[0]'"); 
    //the value of $ad[0] returns nothing 
    //i did something here 
    //but it is not working 
} 

这个查询有什么问题?

+4

什么意思是“不工作”*完全*? – Alejandro 2015-02-12 00:04:15

+1

不要使用'mysql_ *'函数。他们被弃用,也是一个可怕的,可怕的界面。使用['PDO'](http://php.net/manual/en/book.pdo.php)或['Mysqli'](http://php.net/manual/en/book.mysqli.php) 。现在已经不存在了......你确定'$ _SESSION ['id']'中有一个值吗?在尝试使用它之前你调用过session_start()吗?我也没有看到你调用'mysql_connect()'或'mysql_select_db()'的位置 - 你也调用过这些吗? – prodigitalson 2015-02-12 00:07:30

+0

'mysql_error()'说你的查询有误吗? – Quentin 2015-02-12 00:10:15

回答

0

不要使用MYSQL,而应该使用MySQLi作为MySQL是DEPRECATED

但是:

$tid=$_SESSION['id']; 
$a=mysql_query("select * from tbl_curriculum_sched where TEACHER_ID='$tid'") or die("$ a error : ".mysql_error());   

while($ad=mysql_fetch_array($a)){ 
$sql= mysql_query("SELECT * from enrolled where CURRICULUM_SCHED_ID='$ad[0]'") or die("inner while: ".mysqli_error()); 
... 

要你们这些评论和comlaining的OP应该使用$一个,而不是$ad - 不,这是不是这样的 - 作为while语句将输出内容到$ad变量作为命名和数字键。

另请参见:数据库连接需要声明。

另外:session_start()需要声明。

如果$ad[0]特别没有价值,没有mysql_error()已经抛出,则考虑使用mysql_fetch_row在PHP设置INI意味着可能从MySQL表中的数据的数字键不保存,数据只可能是按名称存储,这是全面使用数据的更好方法。

请尽量避免使用SELECT *

+0

这真的很奇怪!我在while循环外面放置了'$ ad = mysql_fetch_array($ a)',然后我运行了'var_dump($ ad)'然后运行,它以数组的形式返回了很多值。但是当我把它放回到while循环时它是空的。发生什么事?这有什么问题?这是前一阵子!为什么现在这样呢? – melly 2015-02-12 01:21:24

0

有时帮我,当我在SQL中使用var有奇怪的问题与指数:

$var_temp = $ad[0]; 

在SQL查询中放:

'$var_temp' 
0

尝试变种转储也许你可以看到一些调试

while($ad=mysql_fetch_array($a)){ 
$sql= mysql_query("SELECT * from enrolled where CURRICULUM_SCHED_ID='$ad[0]'"); 
    var_dump($sql); 
} 
相关问题