mysql_fetch_assoc problem

Hy everyone, I have one problem with this script. Code is

[code]function get_posts(){
$sql = “SELECT
posts . post_id AS id,
posts . post_title AS title,
LEFT(posts . post_body, 512) AS preview,
posts . post_user AS user,
DATE_FORMAT(posts . post_date, ‘%d/%m/%Y %H:%i:%s’) AS date,
comments. total_comments,
DATE_FORMAT(comments . last_comment, %d/%m/%Y %H:%i:%s) AS last_comment
FROM posts
LEFT JOIN (
SELECT
post_id,
COUNT (comment_id) AS total_comments,
MAX (comment_date) AS last_comment
FROM comments
GROUP BY post_id
) AS comments
ON posts . post_id = comments.post_id
ORDER BY posts, post_date DESC”;

$posts =  mysql_query($sql);

$rows = array();
while (($row = mysql_fetch_assoc($posts)) !==false){                                           //this is line where is error
	$rows[] = array(
		'id'				=>$row['id'],
		'title'				=>$row['title'],
		'preview'			=>$row['preview'],
		'user'				=>$row['user'],
		'date'				=>$row['date'],
		'total_comments'	=>($row['total_comments'] === null) ? 0 : $row['total_comments'],
		'last_comment'		=>($row['last_comment'] === null) ? 'never' : $row['last_comment']
	);
	
}

return $rows;[/code]

When in file where I want to show what I wrote to the database enter this code:

[code]$posts = get_posts();

print_r($posts);[/code]

I got this errors

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\wamp\www\blog_system\core\inc\posts.inc.php on line 41

When in phpmyadmin run SQL query on database for code i write up there i got this error:
Error: FUNCTION blog.COUNT does not exist. Check the ‘Function Name Parsing and Resolution’ section in the Reference Manual in C:\wamp\www\blog_system\core\inc\posts.inc.php on line 39

I tryied everything to fix this and failed, hope someone will help me here.

Without testing it…

This is the Boolean, too many ('s

while ($row = mysql_fetch_assoc($posts) !==false){

This also might clear up your Warning: mysql_fetch_assoc() expects parameter 1 to be resource,

Still same error, pls help :frowning:

Revert back to your original code.

Use and tell us what it brings back
[php]$posts = mysql_query($sql) or die($sql." – ".mysql_error());[/php]

This:

SELECT posts . post_id AS id, posts . post_title AS title, LEFT(posts . post_body, 512) AS preview, posts . post_user AS user, DATE_FORMAT(posts . post_date, ‘%d/%m/%Y %H:%i:%s’) AS date, comments. total_comments, DATE_FORMAT(comments . last_comment, %d/%m/%Y %H:%i:%s) AS last_comment FROM posts LEFT JOIN ( SELECT post_id, COUNT (comment_id) AS total_comments, MAX (comment_date) AS last_comment FROM comments GROUP BY post_id ) AS comments ON posts . post_id = comments. post_id ORDER BY posts, post_date DESC – FUNCTION blog.COUNT does not exist. Check the ‘Function Name Parsing and Resolution’ section in the Reference Manual

http://dev.mysql.com/doc/refman/5.0/en/function-resolution.html
To use the name as a function call in an expression, there must be no whitespace between the name and the following “(” parenthesis character.

[php]LEFT JOIN ( SELECT post_id, COUNT (comment_id) AS total_comments, MAX (comment_date)[/php]

Try
[php]LEFT JOIN (SELECT post_id, COUNT(comment_id) AS total_comments, MAX(comment_date)[/php]

Thanks man, that really help me. :smiley:

No problem :slight_smile:

Sponsor our Newsletter | Privacy Policy | Terms of Service