【问题标题】:How to print a mysql query to view what's being sent [closed]如何打印 mysql 查询以查看正在发送的内容 [关闭]
【发布时间】:2013-08-23 15:32:01
【问题描述】:

我正在尝试在页面上查看(打印或回显)以下人员发送的实际查询:

$req1 = mysql_query('select m1.id, m1.title, m1.date_time, count(m2.id) as reps, users.username as userid, users.username from pm as m1, pm as m2,users where ((m1.user1="'.$_SESSION['username'].'" and m1.user1read="no" and users.id=m1.user2) or (m1.user2="'.$_SESSION['username'].'" and m1.user2read="no" and users.id=m1.user1)) and m1.id2="1" and m2.id=m1.id group by m1.id order by m1.id desc'); 

我已经尝试在网上寻找一种方法来做到这一点,但“echo $req1”只是返回一个资源 ID。出了点问题,可能是用户名变量,它没有返回任何记录。有人可以解释如何获取实际的查询,因为它使用用户名变量等运行以打印?我不知道该怎么做。

提前谢谢你的天才!!! :)

【问题讨论】:

  • 最简单的方法?不要将 SQL 直接传递给mysql_query(),而是先将其分配给一个变量。然后,您可以将该变量传递给mysql_query(),并将其回显。
  • 这不是 $req1 吗?我很困惑。那会是什么样子?
  • @andrewsi 为您提供了所需的答案。从代码可读性的角度来看,这也是一种很好的做法。我认为这个问题应该是一个封闭的问题,但是因为我不知道我见过一个更好的例子,即不符合“最低限度的理解”标准。
  • 感谢 Smokey 的以下演示。对于我们刚刚学习的新手来说,有些术语仍然令人困惑,举个例子很有帮助。 :)

标签: php mysql


【解决方案1】:
$sql = 'select m1.id, m1.title, m1.date_time, count(m2.id) as reps, users.username as userid, users.username from pm as m1, pm as m2,users where ((m1.user1="'.$_SESSION['username'].'" and m1.user1read="no" and users.id=m1.user2) or (m1.user2="'.$_SESSION['username'].'" and m1.user2read="no" and users.id=m1.user1)) and m1.id2="1" and m2.id=m1.id group by m1.id order by m1.id desc';
var_dump($sql);
//then to run it
$req1 = mysql_query($sql);

虽然 mysql_* 函数已被弃用 - 您应该使用 mysqli 或 PDO

【讨论】:

  • 感谢您的清晰演示,Smokey。我会试一试! :) 感谢您的友好回复。我还在学习。
  • 这很奏效,Smokey。谢谢。
  • @user2672667 不用担心,很高兴能帮上忙
【解决方案2】:

你可以查看Mysql的日志。在 Linux 系统上,它们位于 /var/log 目录中。您还需要使用特定选项启动 Mysql 服务器,具体取决于版本。您将在此处找到更多信息:http://dev.mysql.com/doc/refman/5.1/en/query-log.html

注意:记录查询对性能有重要影响,因此我不建议在生产服务器上这样做。

【讨论】:

    猜你喜欢
    • 2018-12-13
    • 1970-01-01
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 2019-01-15
    • 1970-01-01
    • 2011-08-24
    相关资源
    最近更新 更多