1

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

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

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

$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

4 回答 4

0

你的$database变量是空的,你正在使用它mysql_select_db

于 2012-09-25T17:58:13.733 回答
0

那些换行符可能是问题所在......

尝试

$sql = "select email, count(*) as count from table where date=\"open\" group by email order by email";
于 2012-09-25T18:02:19.860 回答
0
  1. 第 19 行(包括空行)中的 sql var 缺少 $。
  2. $result 的价值是多少?还是在那之前有错误?
于 2012-09-25T18:06:01.910 回答
-1

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

还要确保您与数据库有活动连接。您只是在检查连接是否可行,所以我不确定您是否真的保持连接完好无损。

相反,您可以这样做:

$connect = mysql_connect($db_host, $db_user, $db_pwd) or die(mysql_error());
于 2012-09-25T17:54:38.827 回答