Search code examples
phpmysqlprepare

Mysql prepare statement - Select


Who can give me an advice? why the query can't to provide me an expected value? Thanks.

 $mysqli = new mysqli($GLOBALS["mysql_host"], $GLOBALS["mysql_user"],          $GLOBALS["mysql_passwd"], $GLOBALS["mysql_database"]);
 $stmt = $mysqli->prepare("SELECT one FROM table ORDER BY date DESC LIMIT 1");
 $last = $stmt->bind_result($one);
 $stmt->execute();
 $stmt->close();
 $mysqli->close();

 Echo $last; //it should be "abc"

Solution

  • I think you have to execute and then call fetch on mysql_stmt-objects. Because you may get multiple results (rows).

    With fetch you will advance your result-Cursor.

    Documentation: mysqli mysqli-stmt

    <?php
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");
    
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }
    
    /* prepare statement */
    if ($stmt = $mysqli->prepare("SELECT Code, Name FROM Country ORDER BY Name LIMIT 5")) {
        $stmt->execute();
    
        /* bind variables to prepared statement */
        $stmt->bind_result($col1, $col2);
    
        /* fetch values */
        while ($stmt->fetch()) {
            printf("%s %s\n", $col1, $col2);
        }
    
        /* close statement */
        $stmt->close();
    }
    /* close connection */
    $mysqli->close();
    
    ?>