mysql_query不起作用,但得到正确的id

时间:2014-06-05 08:11:55

标签: php mysql

我有一个表“课程”的列表(类别)。我想当用户选择他想要的餐馆时,他会看到这个类别的新闻列表(来自表“新闻”)。 所以我需要的是保存类别的名称,所以我可以用这个类别搜索表“新闻”新闻。 但功能mysql_query不想工作,我不知道这里的问题在哪里,它显示警告:

  

mysql_fetch_assoc()期望参数1是资源,给定布尔值   在   列表与类别:

 $conn = mysql_connect ("localhost", "root", "") or die ("Соединение не установлено!");
 mysql_select_db('university'); 
 mysql_query("SET NAMES 'utf8'"); 
 $res = mysql_query("SELECT * FROM courses");
 while($course = mysql_fetch_assoc($res)) {?>
 <tr>
 <td><?=$course['id']?></td>
 <td><a href="category_courses_detail.php?id=<?=$course['name']?>"><?=$course['name']?>     </td>
 </tr><?
 }?>
 </tbody></table>

列出结果(带警告)

 <?php
 $conn = mysql_connect ("localhost", "root", "") or die ("Соединение не установлено!");
 mysql_select_db('university'); // выбор БД
 mysql_query("SET NAMES 'utf8'"); // кодировка
 $res = mysql_query("SELECT * FROM news WHERE course = {$_GET['id']}"); /* MISTAKE IS HERE*/
 var_dump($res) ;
 echo $_GET['id'];
 mysql_error();
 while($news = mysql_fetch_assoc($res)) {?>
 <table border="1" align="center" style="word-wrap: break-word;" width="80%"  cellspacing="0" cellpadding="1">
 <tr><th width="30">ID</th><th>Название</th></tr>
 <tr>
 <td><a href="detail.php?id=<?=$news['id']?>"><?=$news['id']?></td>
 <td><a href="detail.php?id=<?=$news['id']?>"><?=$news['program']?></td>
 </tr><?
 }?>
 </tbody></table>

因为我正在使用echo $ _GET ['id'];我看到它得到了我需要的东西(类别的名称,但仍然不起作用)

是的,我知道使用mysqli或pdo更好

谢谢你,它现在有效。

2 个答案:

答案 0 :(得分:1)

如果course是字符串,则应为:

$id = mysql_real_escape_string($_GET['id']);
$res = mysql_query("SELECT * FROM news WHERE course = '$id'"); /* MISTAKE IS HERE*/

您需要围绕字符串值引用,并且应该转义参数以防止SQL注入。

答案 1 :(得分:0)

执行SELECT Query,如下面

 $res = mysql_query("SELECT * FROM news WHERE course = '{$_GET['id']}'");