Click here to Skip to main content
15,886,693 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I have an errors it says

Notice: Undefined variable: mysqli in C:\xampp\htdocs\cwang\users.php on line 40

Fatal error: Call to a member function query() on null in C:\xampp\htdocs\cwang\users.php on line 40


What I have tried:

dbconnect.php
<?php


$con = mysqli_connect("localhost","root","","dbmargs");

if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
?>



user.php

<html>

<head>

  <style>
			body
				{
					background-image: url('img/indexback.jpg');
					background-attachment: fixed;
					background-size: 100% 100%;
				}
		</style>

<title>MySQLi Read Records</title>
 <link rel="stylesheet" type="text/css" href="css/style.css">
</head>

<body>

<ul class="topnav">

    <li><a href="#home">Home</a></li>



</ul>

<?php


include 'dbconnect.php';



$query = "select * from tblregister";


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



$num_results = $result->num_rows;



echo "<div><a href='add.php'>Create New Record</a></div>";

if( $num_results > 0){ 

echo "<table border='1'>";



echo "<tr>";

echo "<th>Firstname</th>";

echo "<th>Lastname</th>";

echo "<th>Username</th>";

echo "<th>Action</th>";

echo "</tr>";



while( $row = $result->fetch_assoc() ){



extract($row);



echo "<tr>";

echo "<td>{$firstname}</td>";

echo "<td>{$lastname}</td>";

echo "<td>{$username}</td>";

echo "<td>";

//just preparing the edit link to edit the record

echo "<a href='edit.php?id={$id}'>Edit</a>";

echo " / ";



echo "<a href='#' onclick='delete_user( {$id} );'>Delete</a>";

echo "</td>";

echo "</tr>";

}

echo "</table>";//end table

}else{

//if database table is empty

echo "No records found.";

}

//disconnect from database

$result->free();

$mysqli->close();

?>

</body>

</html>
Posted
Updated 9-Dec-19 1:21am

1 solution

You are mixing the object oriented and the procedural style when executing mysqli functions. I suggest to choose only one style.

dbconnect.php uses the procedural style and assigns the object to $con.

In user.php you are calling the query function in the object oriented style using the undefined $mysqli object:
PHP
$result = $mysqli->query( $query );

You must use the object returned from connecting instead:
PHP
$result = $con->query( $query );
or use the procedural style:
PHP
$result = mysqli_query( $con, $query );


See also the examples at PHP: mysqli::query - Manual[^].
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900