Anyone know where is my mistake?
The error show when i click on "buy" in product.php.
Please guide me.
---------------------------------------------------------

Error shown:
Fatal error: Call to a member function fetch_row() on
a non-object in C:\test\kelly.php on line 14

----------------------------------------------------------

//product.php
<?php
 
include("db.php");
$db=new mysqli('localhost','root','','test');
$db->select_db('test');
 
$query="select * from book order by title asc";
$result = $db->query($query);
?>
<?php
while($row =$result->fetch_assoc())
{
?>
 
<table border=1 width=80% bgcolor="pink">
<tr>
<td width=20%>
<font face="verdana" size="2" color="black" >
ISBN :
</font>
</td>
<td >
<font face="verdana" size="2" color="black">
<?php echo $row["isbn"]; ?>
</font>
</td>
</tr>
<tr>
<td width=20%>
<font face="verdana" size="2" color="black">
TITLE:
</font>
</td>
<td >
<font face="verdana" size="2" color="black">
<?php echo $row["title"]; ?>
</font>
</td>
</tr>
<tr>
<td width=20%>
<font face="verdana" size="2" color="black">
Author :
</font>
</td>
<td > 
<font face="verdana" size="2" color="black">
<?php echo $row["author"]; ?>
</font>
</td>
</tr>
<tr>
<td width=20%>
<font face="verdana" size="2" color="black">
Description :
</font>
</td>
<td >
<font face="verdana" size="2" color="black">
<?php echo $row["description"]; ?>
</font>
</td>
</tr>
<tr>
<td width=20%>
<font face="verdana" size="2" color="black">
Condition :
</font>
</td>
<td >
<font face="verdana" size="2" color="black">
<?php echo $row["condition"]; ?>
</font>
</td>
</tr>
<tr>
<td width=20%>
<font face="verdana" size="2" color="black">
Price(RM) : 
</font>
</td>
<td >
<font face="verdana" size="2" color="black">
<?php echo $row["price"]; ?>
</font>
</td>
</tr>
 
 
<td >
<font face="verdana" size="2" color="black">
<a href="cart.php?action=add_item&id=<?php echo $row["bookid"];?>">Buy</a>
</font>
</td>
</tr>
<br />
</table>
<?php }?>
<tr>
<td >
<hr size="2" color="red" NOSHADE>
</td>
</tr>
 
<tr>
<td >
<font face="verdana" size="5" color="black">
<a href="cart.php"> View Your Shopping Cart &gt;&gt;</a>
</font>
</td>
</tr>
</table>
</body>
</html>
------------------------------------------------
//kelly.php
<?php

function AddItem($bookid){

$db=new mysqli('localhost','root','','test');
$db->select_db('test');
$query="select count(*) from cart where cookieId = '" . GetCartId() . "' and bookid = $bookid";
$result=$db->query($query);

$row =$result->fetch_row();
$numRows = $row[0];
if($numRows == 0)
{
// This item doesn't exist in the users cart,
// we will add it with an insert query
$query="insert into cart(cookieId, bookid) values('" . GetCartId() . "', $bookid)";
$result=$db->query($query);
}
else
{
 echo "The book already in your shopping cart.";
 
// This item already exists in the users cart,
}
}
function RemoveItem($bookid){
$db=new mysqli('localhost','root','','test');
$db->select_db('test');
$query="delete from cart where cookieId = '" . GetCartId() . "' and bookid = $bookid";
$result=$db->query($query);
}
 
 
function ShowCart(){
$db=new mysqli('localhost','root','','test');
$db->select_db('test');

$query="select * from cart inner join items on cart.bookid = book.bookid where cart.cookieId = '" . GetCartId() . "' order by book.title asc";
$result=$db->query($query);
$totalCost=0;
while($row = $result->fetch_assoc())
{
// Increment the total cost of all items
$totalCost+=$row["price"];
?>
 

<td width="55%" height="25">
<font face="verdana" size="1" color="black">
<?php echo $row["title"]; ?>
</font>
</td>
<td width="20%" height="25">
<font face="verdana" size="1" color="black">
$<?php echo number_format($row["price"], 2, ".", ","); ?>
</font>
</td>
<td width="10%" height="25">
<font face="verdana" size="1" color="black">
<a href="cart.php?action=remove_item&id=<?php echo $row["bookid"]; ?>">Remove</a>
</font>
</td>
</tr>
<br />
<?php } ?>
<tr>
<td width="100%" colspan="4">
<hr size="1" color="red" NOSHADE>
</td>
</tr>
<tr>
<td width="70%" colspan="2">
<font face="verdana" size="1" color="black">
<a href="products.php">&lt;&lt; Keep Shopping</a>
</font>
</td>
<td width="30%" colspan="2">
<font face="verdana" size="2" color="black">
<b>Total: $<?php echo number_format($totalCost, 2); ?></b>
</font>
</td>
</tr>
<?php } ?>
---------------------------------------------------
//cart.php
<?php
include("kelly.php");
include("db.php");
?>

<?php
switch($_GET["action"])
{
case "add_item":
{
AddItem($_GET["bookid"]);
ShowCart();
break;
}

case "remove_item":
{
RemoveItem($_GET["bookid"]);
ShowCart();
break;
}
default:
{
ShowCart();
}
}
?>

---------------------------------------------------
//db.php
<?php
function GetCartId()
{
// This function will generate an encrypted string and
// will set it as a cookie using set_cookie. This will
// also be used as the cookieId field in the cart table
if(isset($_COOKIE["cartId"]))
{
return $_COOKIE["cartId"];
}
else
{
// There is no cookie set. We will set the cookie
// and return the value of the users session ID
session_start();
setcookie("cartId", session_id(), time() + ((3600 * 24) * 30));
return session_id();
}
}
?>
-----------------------------------------------//end

....

You're serious?

1. Don't just post 200 lines of code and expect us to wade through it every single time. I have a feeling if I collected all the code you've posted, I could run your application myself and it would work. Only post the code that is broken. That should be obvious enough by looking at the line number.
2. The error is coming from kelly.php, not product.php! Even if I was prepared to search through another 200 lines of code, I couldn't find an error which comes from a completely seperate file.

Anyways, from what I can tell, you didn't declare the class which fetch_row() belongs to properly.

Like the other member suggested, you have pasted too much code. Since you only have one fetch_row method in the code and the error happened on that line I would guess:

The "$result" was not initialized successfully. I would check if the query returned successfully. If the syntax has no problem, check if "$bookId" is passed in correctly...

Your query fails, thus $result is not an object. Try debugging to see what causes it to fail:

//kelly.php

//......

$result=$db->query($query);

if(!$result) die($db->error); //output the error if the query fails
This article has been dead for over six months. Start a new discussion instead.