MYSQL - 编写PHP查询

时间:2012-09-25 17:53:02

标签: php mysql

我只是在学习MYSQL / PHP。我遇到查询问题,它在myphpadmin中工作:

select `email`, count(*) as count
from `table`
where `date` = "open"
group by `email`
order by `email`

如果我自己编写mysql_query或使用php myphpadmin生成,我无法工作:

$sql = "select `email`, count(*) as count\
    . "from `table`\n"
    . "where `date` = \"open\"\n"
    . "group by `email`\n"
    . "order by `email`\n"
    . "";

目的是查询EMAIL,DATE,EVENT的三栏表 - 其中EVENT可以是“打开”或“退回”,并计算一个人打开电子邮件的次数。

这是文件的其余部分(我意识到我应该使用msqli,这是我列表中的下一个要弄清楚....):

<?php


$db_host = '123';
$db_user = '123';
$db_pwd = '123';

$database = '';
$table = 'test';

if (!mysql_connect($db_host, $db_user, $db_pwd))
    die("Can't connect to database");

if (!mysql_select_db($database))
    die("Can't select database");



sql = "select `email`, count(*) as count\n"
    . "from `table`\n"
    . "where `date` = \"open\"\n"
    . "group by `email`\n"
    . "order by `email`\n"
    . "";



// sending query
$result = mysql_query($sql);
if (!$result) {
    die("Query to show fields from table failed 2");
}



echo "<table border='1'>
<tr>
<th>email</th>
<th>event</th>
<th>date</th>

</tr>";

while($row = mysql_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['Email'] . "</td>";
  echo "<td>" . $row['event'] . "</td>";
  echo "<td>" . $row['date'] . "</td>";
   }

echo "</table>\n";




mysql_free_result($result);
?>

我刚刚收到“查询显示表格中的字段失败2” - 查询无法正常工作

查询中的'\ n' - 由myphpadmin生成(当我使用“生成php代码”功能时

我有一个与数据库的连接,我刚刚更改了分配给这些变量的值,所以我不会发布它们

我的文件中的$ sql var中有“$”,只是没有将它复制到这里。

所以,

当我用一个简单的查询替换这个查询时,它工作正常,但是当我尝试更复杂的查询时,没有运气。我假设它与将mysql WHERE date =“open”转换为正确的(转义的?)php ....


当我找到自己的问题时,我不确定程序是什么=最大的问题(有几个)。当我在myphpadmin上使用“生成PHP代码”功能时,它没有从表格中列的名称中保留电子邮件中的大写“E”...

4 个答案:

答案 0 :(得分:0)

您的$database变量为空,并且您正在使用mysql_select_db

答案 1 :(得分:0)

这些换行符可能是问题......

$sql = "select email, count(*) as count from table where date=\"open\" group by email order by email";

答案 2 :(得分:0)

  1. 第19行中的sql var(包括空行)缺少$。
  2. $ result的价值是多少?或者之前有错误吗?

答案 3 :(得分:-1)

您可以尝试使用'而不是`!

还要确保您与数据库建立了有效连接。您只检查是否可以连接,所以我不确定您是否确实保持连接完好。

相反,你可以这样做:

$connect = mysql_connect($db_host, $db_user, $db_pwd) or die(mysql_error());