Trouble with mysqli

大兔子大兔子 提交于 2019-12-25 02:52:24

问题


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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!