2011-11-23 75 views
0

这是原来的MySQL查询:MySQL查询添加到PHP文件

UPDATE jos_bully_table AS jbt1 
INNER 
    JOIN (SELECT jbt2.bully_concat_name, 
       COUNT(*) AS b_name_count 
      FROM jos_bully_table AS jbt2 
      GROUP 
      BY jbt2.bully_concat_name 
     ) AS jbt3 
    ON jbt3.bully_concat_name = jbt1.bully_concat_name 
    SET jbt1.b_name_count = jbt3.b_name_count 
; 

它从phpMyAdmin的运行时的伟大工程。我点击创建PHP代码,这会产生:

$sql = "UPDATE jos_bully_table AS jbt1\n" 
    . " INNER\n" 
    . " JOIN (SELECT jbt2.bully_concat_name,\n" 
    . " COUNT(*) AS b_name_count\n" 
    . " FROM jos_bully_table AS jbt2\n" 
    . " GROUP\n" 
    . " BY jbt2.bully_concat_name\n" 
    . ") AS jbt3\n" 
    . " ON jbt3.bully_concat_name = jbt1.bully_concat_name\n" 
    . " SET jbt1.b_name_count = jbt3.b_name_count\n" 
    . ""; 

我试图运行从一个php文件相同的查询,但是该数据库没有更新。

这里是我的PHP文件:

<?php 

$database = "xxxxxxxxx" ; 
$username = "xxxxxxxxx" ; 
$password = "xxxxxxxxx" ; 

mysql_connect(localhost,$username,$password); 
@mysql_select_db($database) or die("Unable to select database"); 


mysql_query($sql); 

$sql = "UPDATE jos_bully_table AS jbt1\n" 
    . " INNER\n" 
    . " JOIN (SELECT jbt2.bully_concat_name,\n" 
    . " COUNT(*) AS b_name_count\n" 
    . " FROM jos_bully_table AS jbt2\n" 
    . " GROUP\n" 
    . " BY jbt2.bully_concat_name\n" 
    . ") AS jbt3\n" 
    . " ON jbt3.bully_concat_name = jbt1.bully_concat_name\n" 
    . " SET jbt1.b_name_count = jbt3.b_name_count\n" 
    . ""; 

echo "<!-- SQL Error ".mysql_error()." -->"; 

?> 

有什么不对呢?

回答

5

您正在运行您的查询字符串之前,您已定义它。

$sql = "SELECT ..." 
$result = mysql_query($sql) or die(mysql_error()); 

同样,考虑HEREDOC S代表限定多行字符串:

$sql = <<<EOL 
SELECT .. 
FROM ... 
WHERE ... 
ORDER BY .. 
EOL; 

比多行级联更加可读