Warning: mysqli_error() expects parameter 1 to be mysqli, string given in
I want to connect to a database (with xampp) called ranch and insert into this db some form data. The browser displays the error:
Warning: mysqli_error() expects parameter 1 to be mysqli, string given in C:\xampp\htdocs\project1\register.php on line 38
ERROR: Could not able to execute INSERT INTO child_parent('childname','childsurname','age','gender','name','surname','address','tk','city','telephone','mobile','email','parea','pass') VALUES('nikos','ads','34','Αγόρι','sds','sds','dsd','34','dsds','34','434','[email protected]','sds','34').
I have the .php file that is below. How can I fix it?
<?php
ini_set('display_errors', 'On');
session_start();
unset ($msg);
echo "kajsj<br>";
$conn= new mysqli("localhost","root","","ranch");
if (mysqli_connect_errno())
{ printf("Connect failed: %s\n",mysqli_connect_error());//error message
}
else
{
printf("Connect achieved<br>");
echo $_GET['childname'];
$childname=$_GET['childname'];
$childsurname=$_GET['childsurname'];
$age=$_GET['age'];
$gender=$_GET['gender'];
$name=$_GET['name'];
$surname=$_GET['surname'];
$address=$_GET['address'];
$tk=$_GET['tk'];
$city=$_GET['city'];
$telephone=$_GET['telephone'];
$mobile=$_GET['mobile'];
$email=$_GET['email'];
$parea=$_GET['parea'];
$pass=$_GET['pass'];
// Insert data into mysql
$query1="INSERT INTO child_parent('childname','childsurname','age','gender','name','surname','address','tk','city','telephone','mobile','email','parea','pass')
VALUES('$childname','$childsurname','$age','$gender','$name','$surname','$address','$tk','$city','$telephone','$mobile','$email','$parea','$pass')";
if(mysqli_query($conn, $query1))
{echo "Records added successfully.";
}
else{echo "ERROR: Could not able to execute $query1. " . mysqli_error($query1);
}
}
?>
There are three main problems with your code:
- Wrong SQL. You have to learn basic SQL syntax prior trying to use SQL from PHP.
- Wrong mysqli syntax. You have to use prepared statements instead of adding variables right in the query.
- Wrong error reporting. You have to set mysqli in exception mode instead of checking every query result manually.
To solve them one by one, read these three helpful answers:
- When to use single quotes, double quotes, and backticks in MySQL
- How can I prevent SQL injection in PHP?
- How to get mysqli error in different environments?