问题
I am new to mysqli functions . I have written a code to do the simple select functionality . Here is what I have done
<?php
#---- ini settings(ini)---
ini_set('display_errors', '1');
#---------(/ini)------------
#-------initialisations(init)---
$dbUser = 'myuser';
$dbPass = 'mypass';
$dbhost = 'localhost';
$dbname = 'mydb';
#------------(/init)------------
#---- database connection (db connect)-----
$mysqli = new mysqli($dbhost, $dbUser, $dbPass, $dbname);
$is_error = ($mysqli->connect_errno)?true:false;
if( $is_error )
{
echo $mysqli->connect_error;
}
#-----------------(/ db connect)-----------
/** ------------ queries ---------- **/
$stmt = $mysqli->prepare("SELECT * FROM dept");
if(! $stmt)
{
echo "statement not prepared well";
}
else
{
echo $mysqli->error;
}
if (!$stmt->execute()) {
echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
}
if (!($res = $stmt->get_result())) {
echo "Getting result set failed: (" . $stmt->errno . ") " . $stmt->error;
}
/** ------------------------------- **/
#------result ----
var_dump($res->fetch_all());
#---------(/result)----
?>
But When I run this code nothing gets displayed no error , no data just a white blank page .. wht I am missing out ..... ? Or how Should I debug it
Thanks in advance.
回答1:
Your database connection is failing, but inside that failure block you have a wrong variable name being output and hence nothing is being displayed
$mysqliObj->connect_error; // no object named $mysqliObj there
Following
$is_error = ($mysqli->connect_errno)?true:false;
if( $is_error )
{
echo $mysqliObj->connect_error;
}
Should be
$is_error = (mysqli_connect_errno)?true:false;
if( $is_error )
{
echo $mysqli->connect_error;
}
回答2:
You missed letter 's'
ini_set('display_errors', '1');
回答3:
Have a look at this code block, I've just gone over it very quickly so might not have caught everything but it should point you in the right direction.
<?php
#---- ini settings(ini)---
ini_set('display_errors', '1');
#---------(/ini)------------
#-------initialisations(init)---
$dbUser = 'myuser';
$dbPass = 'mypass';
$dbhost = 'localhost';
$dbname = 'mydb';
#------------(/init)------------
#---- database connection (db connect)-----
$mysqli = @new mysqli($dbhost, $dbUser, $dbPass, $dbname);
#-----------------(/ db connect)-----------
if(!$mysqli) {
echo $mysqli->connect_errno.": ".$mysqli->connect_error;
} else {
/** ------------ queries ---------- **/
$stmt = $mysqli->prepare("SELECT * FROM dept;");
$stmt->execute();
if (!$stmt) {
echo "Execute failed: (" . $mysqli->errno . ") " . $mysqli->error;
} else {
$res = $stmt->get_result();
if(!$res) {
echo "Getting result set failed: (" . $mysqli->errno . ") " . $mysqli->error;
} else {
var_dump($res->fetch_all());
}
}
$mysqli->close($mysqli);
}
?>
回答4:
// change settings for error handler to show errors
// $this setup is used for checking errors for development to be shown....
ini_set('display_errors', 1);
error_reporting(E_ALL);
Try to add else to see if query is successfuly executed but no result.
if (!$stmt->execute()) {
echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
}
// add else
else{
echo "Query is succesfully executed but no result fetch"
}
replace your query by this one to count the number of datas
if ($result = mysqli_query($mysqli, "SELECT * FROM dept")) {
printf("Select returned %d rows.\n", mysqli_num_rows($result));
/* free result set */
mysqli_free_result($result);
}
来源:https://stackoverflow.com/questions/15632771/trouble-with-mysqli