2012-09-25 22 views
0

我剛剛學習MYSQL/PHP。我有一個查詢的麻煩,它的工作在myphpadmin:MYSQL - 編碼一個PHP查詢

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 =「開」到適當的(逃?)PHP做....


我不知道這個程序是什麼,當我發現八九不離十我自己的問題最大的問題(幾個)。當我用myphpadmin它「生成PHP代碼」功能並沒有保持資本「E」中的電子郵件從表中的列的名稱...

+0

爲什麼在您的查詢 '\ n'? – GBD

+0

你是什麼意思,你不能得到它的工作?有錯誤嗎?返回錯誤的值?一點都沒有? – andrewsi

+0

請停止使用古代mysql_ *函數編寫新代碼。他們不再保持和社區已經開始了[棄用過程(http://news.php.net/php.internals/53799)。相反,您應該瞭解準備好的語句並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/mysqli)。如果你關心學習,[這裏是一個很好的PDO相關教程](http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers)。 – DCoder

回答

0

這些換行符可能是問題...

嘗試

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

試過,沒有工作 – elong

+0

它確實工作後,我解決了另一個問題 - 謝謝! – elong

-1

你可以嘗試使用'而不是'!

另外請確保您與數據庫有活動連接。你只是檢查如果連接是可能的,所以我不確定你是否確實保持連接完好無損。

相反,你可以這樣做:

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

back ticks由phpmyadmin生成以包圍表名。它是合法的 – Julien

+0

是的,我知道,但有時如果我遇到了一些問題,那麼工作。 – Andre

0

$database變量是空的,並且您使用與您的mysql_select_db

0
  1. 第19行(包含空行)中的sql var缺少$。
  2. $ result的值是多少?或者之前有錯誤嗎?