【问题标题】:SQL Join maybe?SQL加入也许?
【发布时间】:2010-09-30 21:27:16
【问题描述】:

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

$sql84 = mysql_query("SELECT username FROM users WHERE id = '".$news['user_id']."'") 或 exit(mysql_error()); $author = mysql_fetch_array($sql84);

有没有更好的方法来做到这一点?也许加入?看起来怎么样

【问题讨论】:

    标签: sql join


    【解决方案1】:
    $query = mysql_query("SELECT n.*, u.* FROM news n LEFT JOIN users u ON u.id=n.user_id WHERE n.id = ".intval($_GET['id']));
    

    如果假定值为数字,请不要忘记使用 intval()。

    【讨论】:

      【解决方案2】:

      您似乎想要这样的东西:

      (已编辑以添加错误检查)

      $q = "select username from news, users where news.user_id=users.id and news.id=".$_GET['id'].");";
      $query = mysql_query($q) or die(mysql_error());
      

      【讨论】:

      • 看起来不错,但您似乎忘记了 user.id 上的“s”应该是 users.id。
      • 糟糕!发现得好。谢谢!现在已经修好了。
      • 我明白了:/ 警告:mysql_fetch_assoc():提供的参数不是第 5 行 c/krukow/news.php 中的有效 MySQL 结果资源 $query = mysql_query("SELECT username from news,用户 WHERE news.user_id = user.id 和 news.id = ".$_GET['newsID'].");"); $news = mysql_fetch_assoc($query);
      • 嗯...不知道为什么。我在上面的示例中添加了错误检查。您可能还想检查 $_GET['id]' 是否真的包含您期望它包含的内容,也许可以尝试使用 news.id 的硬编码值。
      • 这个输出 $query = mysql_query("SELECT * FROM news, users WHERE news.user_id = users.id AND news.id = ".$_GET['newsID'].""); $news = mysql_fetch_assoc($query);除了“文本”行之外的所有内容都是新闻......它是其中的文本,所以我不明白
      猜你喜欢
      • 1970-01-01
      • 2020-01-01
      • 2019-07-07
      • 1970-01-01
      • 2022-01-23
      • 2013-02-12
      • 2017-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多