Hi there, I am half way thro the blog video tutorials (part 04) and I get an error when I run the blog_list.php page.
Here is the Error message I get on the blog_list.php page:
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /home/weebcoma/public_html/blog/func/inc/posts.inc.php on line 45
I also already tried the echo mysql_error() function. Appreciate your help
[syntax=php]//Check if the given post ID is in the table
function valid_pid($pid){
$pid = (int)$pid;
$total = mysql_query ("SELECT COUNT('post_id') FROM 'posts' WHERE 'post_id'= {$pid}");
$total = mysql_result ($total, 0);
if ($total != 1) {
return false;
}else {
return true;
}
}
// fetches a summary of all the blog posts
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);
echo mysql_error();
$rows =array ();
while (($row = mysql_fetch_assoc($posts)) !== false) {
$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)? 'Be the first one to comment on this post' : $row['last_comment']
);
}
return $rows;
}
//fetches a single post from the table
function get_post($pid) {
$pid = (int) $pid;
$sql = "SELECT
'post_title' AS 'title',
'post_body' AS 'body',
'post_user' AS 'user',
'post_date' AS 'date'
FROM 'posts'
WHERE 'post_id'= {$pid}";
$post = mysql_query ($sql);
$post = mysql_fetch_assoc ($post);
$post ['comments'] = get_comments ($pid);
return $post;
}
//adds a new blog entry
function add_post($name, $title, $body) {
$name= mysql_real_escape_string (htmlentities($name));
$title= mysql_real_escape_string (htmlentities($title));
$body= mysql_real_escape_string (nl2br(htmlentities($body)));
mysql_query ("INSERT INTO 'posts' ['post_user'],['post_title'], ['post_body'], ['post_date'] VALUES ('{$name}','{$title}','{$body}', NOW())");
}
[/syntax]
[syntax=php]// fetches all of the comments for a given blog post
function get_comments($pid) {
$pid= (int) $pid;
$sql = "SELECT
'comment_body' AS 'body',
'comment_user' AS 'user',
DATE_FORMAT ('comment_date', '%d/%m/%y %h:%i:%s') AS 'date'
FROM 'comments'
WHERE 'post_id' = {$pid}";
$comments= mysql_query ($sql);
$return= array ();
while (($row = mysql_fetch_assoc($comments)) !== false) {
$return[]= $row;
}
return $return;
}
//adds a comment
function add_comment ($pid, $user, $body) {
if (valid_pid ($pid) === false ) {
return false;
}
$pid=(int)$pid;
$user= mysql_real_escape_string(htmlentities($user));
$body= mysql_real_escape_string(nl2br(htmlentities($body)));
mysql_query ("INSERT INTO 'comments' ('post_id','comment_user','comment_body','comment_date') VALUES ({$pid}, '{$user}','{$body}', NOW())");
return true;
}
[/syntax]
[syntax=php]mysql_connect('localhost', ' ', ' ' );
mysql_select_db('blog');
include 'inc/posts.inc.php';
include 'inc/comments.inc.php';[/syntax]
PHP Tutorial: Blog (Including Commenting) [part 04]
Re: PHP Tutorial: Blog (Including Commenting) [part 04]
It's your query.
You wrote like this,
[syntax=sql]
'posts', 'post_id' AS 'id',
'posts', 'post_title' AS 'title',[/syntax]
It should be like this,
[syntax=sql]
`posts`.`post_id` AS `id`,
`posts`.`post_title` AS `title`,[/syntax]
So you will have to go around changing the comments to periods instead (and no spaces) and use backticks instead of single-quotes.
You wrote like this,
[syntax=sql]
'posts', 'post_id' AS 'id',
'posts', 'post_title' AS 'title',[/syntax]
It should be like this,
[syntax=sql]
`posts`.`post_id` AS `id`,
`posts`.`post_title` AS `title`,[/syntax]
So you will have to go around changing the comments to periods instead (and no spaces) and use backticks instead of single-quotes.
Re: PHP Tutorial: Blog (Including Commenting) [part 04]
Thanks mate but still get the same error. Do I need to change all use the backticks to the single-quotes?
[syntax=php]//Check if the given post ID is in the table
function valid_pid($pid){
$pid = (int)$pid;
$total = mysql_query ("SELECT COUNT(`post_id`) FROM `posts` WHERE `post_id`= {$pid}");
$total = mysql_result ($total, 0);
if ($total != 1) {
return false;
}else {
return true;
}
}
// fetches a summary of all the blog posts
function get_posts() {
$sql = "SELECT `posts`.`post_id` AS `id`,
`posts`.`post_title` AS `title`,
LEFT (`posts`.`post_body`,200) 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);
echo mysql_error();
$rows =array ();
while (($row = mysql_fetch_assoc($posts)) !== false) {
$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)? 'Be the first one to comment on this post' : $row['last_comment']
);
}
return $rows;
}
//fetches a single post from the table
function get_post($pid) {
$pid = (int) $pid;
$sql = "SELECT
`post_title` AS `title`,
`post_body` AS `body`,
`post_user` AS `user`,
`post_date` AS `date`
FROM `posts`
WHERE `post_id`= {$pid}";
$post = mysql_query ($sql);
$post = mysql_fetch_assoc ($post);
$post ['comments'] = get_comments ($pid);
return $post;
}
//adds a new blog entry
function add_post($name, $title, $body) {
$name= mysql_real_escape_string (htmlentities($name));
$title= mysql_real_escape_string (htmlentities($title));
$body= mysql_real_escape_string (nl2br(htmlentities($body)));
mysql_query ("INSERT INTO 'posts' ['post_user'],['post_title'], ['post_body'], ['post_date'] VALUES ('{$name}','{$title}','{$body}', NOW())");
}[/syntax]
[syntax=php]
// fetches all of the comments for a given blog post
function get_comments($pid) {
$pid= (int) $pid;
$sql = "SELECT
`comment_body` AS `body`,
`comment_user` AS `user`,
DATE_FORMAT (`comment_date`, '%d/%m/%y %h:%i:%s') AS `date`
FROM `comments`
WHERE `post_id` = {$pid}";
$comments= mysql_query ($sql);
$return= array ();
while (($row = mysql_fetch_assoc($comments)) !== false) {
$return[]= $row;
}
return $return;
}
//adds a comment
function add_comment ($pid, $user, $body) {
if (valid_pid ($pid) === false ) {
return false;
}
$pid=(int)$pid;
$user= mysql_real_escape_string(htmlentities($user));
$body= mysql_real_escape_string(nl2br(htmlentities($body)));
mysql_query ("INSERT INTO 'comments' ('post_id','comment_user','comment_body','comment_date') VALUES ({$pid}, '{$user}','{$body}', NOW())");
return true;
}
[/syntax]
[syntax=php]//Check if the given post ID is in the table
function valid_pid($pid){
$pid = (int)$pid;
$total = mysql_query ("SELECT COUNT(`post_id`) FROM `posts` WHERE `post_id`= {$pid}");
$total = mysql_result ($total, 0);
if ($total != 1) {
return false;
}else {
return true;
}
}
// fetches a summary of all the blog posts
function get_posts() {
$sql = "SELECT `posts`.`post_id` AS `id`,
`posts`.`post_title` AS `title`,
LEFT (`posts`.`post_body`,200) 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);
echo mysql_error();
$rows =array ();
while (($row = mysql_fetch_assoc($posts)) !== false) {
$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)? 'Be the first one to comment on this post' : $row['last_comment']
);
}
return $rows;
}
//fetches a single post from the table
function get_post($pid) {
$pid = (int) $pid;
$sql = "SELECT
`post_title` AS `title`,
`post_body` AS `body`,
`post_user` AS `user`,
`post_date` AS `date`
FROM `posts`
WHERE `post_id`= {$pid}";
$post = mysql_query ($sql);
$post = mysql_fetch_assoc ($post);
$post ['comments'] = get_comments ($pid);
return $post;
}
//adds a new blog entry
function add_post($name, $title, $body) {
$name= mysql_real_escape_string (htmlentities($name));
$title= mysql_real_escape_string (htmlentities($title));
$body= mysql_real_escape_string (nl2br(htmlentities($body)));
mysql_query ("INSERT INTO 'posts' ['post_user'],['post_title'], ['post_body'], ['post_date'] VALUES ('{$name}','{$title}','{$body}', NOW())");
}[/syntax]
[syntax=php]
// fetches all of the comments for a given blog post
function get_comments($pid) {
$pid= (int) $pid;
$sql = "SELECT
`comment_body` AS `body`,
`comment_user` AS `user`,
DATE_FORMAT (`comment_date`, '%d/%m/%y %h:%i:%s') AS `date`
FROM `comments`
WHERE `post_id` = {$pid}";
$comments= mysql_query ($sql);
$return= array ();
while (($row = mysql_fetch_assoc($comments)) !== false) {
$return[]= $row;
}
return $return;
}
//adds a comment
function add_comment ($pid, $user, $body) {
if (valid_pid ($pid) === false ) {
return false;
}
$pid=(int)$pid;
$user= mysql_real_escape_string(htmlentities($user));
$body= mysql_real_escape_string(nl2br(htmlentities($body)));
mysql_query ("INSERT INTO 'comments' ('post_id','comment_user','comment_body','comment_date') VALUES ({$pid}, '{$user}','{$body}', NOW())");
return true;
}
[/syntax]
Re: PHP Tutorial: Blog (Including Commenting) [part 04]
Backticks are recommended for field names.
Try doing this (instead of echo mysql_error())
[syntax=php]
$posts = mysql_query($sql) or die(mysql_error());
[/syntax]
Try doing this (instead of echo mysql_error())
[syntax=php]
$posts = mysql_query($sql) or die(mysql_error());
[/syntax]
Re: PHP Tutorial: Blog (Including Commenting) [part 04]
I get a blank page when I run the blog_list.php now. Should I be moving forward and write the rest of the codes? I reckon the syntax error still exists but I just beat the hell out of it with the die function right?
Re: PHP Tutorial: Blog (Including Commenting) [part 04]
momoweeb wrote:I get a blank page when I run the blog_list.php now. Should I be moving forward and write the rest of the codes? I reckon the syntax error still exists but I just beat the hell out of it with the die function right?
Blank page does mean syntax error so carrying on will probably get you nowhere. The best thing to do would be to enable error_reporting so that PHP tells you what the problem is rather than silently failing.
Re: PHP Tutorial: Blog (Including Commenting) [part 04]
jacek wrote:momoweeb wrote:I get a blank page when I run the blog_list.php now. Should I be moving forward and write the rest of the codes? I reckon the syntax error still exists but I just beat the hell out of it with the die function right?
Blank page does mean syntax error so carrying on will probably get you nowhere. The best thing to do would be to enable error_reporting so that PHP tells you what the problem is rather than silently failing.
Thanks mate. I solved the problem. Now I get a different sort of error. I put up the error detail in here: http://betterphp.co.uk/board/viewtopic.php?f=7&t=1988
Please take a look and lemme know if you can help.
Cheers
Last edited by Helx on Sat Oct 20, 2012 12:44 pm, edited 2 times in total.
Reason: Unneeded quote.
Reason: Unneeded quote.