Reputation: 39
This is the original MySQL query:
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
;
It works great when running from phpMyAdmin. I clicked Create PHP Code and this is generated:
$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"
. "";
I'm trying to run the same query from a php file, but the db isn't updating.
Here is my php file:
<?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()." -->";
?>
What is wrong with this?
Upvotes: 0
Views: 46
Reputation: 360872
You're running your query string BEFORE you defined it.
$sql = "SELECT ..."
$result = mysql_query($sql) or die(mysql_error());
As well, look into HEREDOCs for defining multi-line strings:
$sql = <<<EOL
SELECT ..
FROM ...
WHERE ...
ORDER BY ..
EOL;
is far more readable than a multi-line concatenation
Upvotes: 5