ss123 ss123 - 1 year ago 108
PHP Question

php MySqli : How can i rewrite fetch to fetch_assoc? LIKE CONCAT

I using "bind_result", "LIKE CONCAT" ... to reach full text search and pagination by two query string.

but how can I change bind_result methods to fetch_assoc?

$mysqli = new mysqli("localhost", "", "", "test");

$query_string="hello"; //keywords

$sqltxt="SELECT * FROM `table` WHERE text1 LIKE CONCAT('%', ?, '%')";

//first query : for get the total number of data
$stmt = $mysqli->prepare($sqltxt);
$total =$stmt->num_rows;

$lastpage = ceil($total/20);//obtain the last page

$startpoint = ($page * 20) - 20;

//second query : for get the true data
$stmt = $mysqli->prepare($sqltxt ." LIMIT {$startpoint}, 20");
$stmt->bind_result($id,$title,$tel); //<= hits!! I want to using fetch_assoc methods

while($stmt->fetch()){ //<= hits!! I want to using fetch_assoc methods

echo $id;
echo $atitle;
echo $tel;




Answer Source

From mysql documentation examples:


// ... document's example code:

/* bind parameters for markers */
$stmt->bind_param("s", $city);

/* execute query */

/* instead of bind_result: */
$result = $stmt->get_result(); //with get_result ;)

/* now you can fetch the results into an array - NICE */
while ($myrow = $result->fetch_assoc()) { //now you can use fetch_assoc

    // use your $myrow array as you would with any other fetch
    printf("%s is in district %s\n", $city, $myrow['district']);



Please read the user notes for this method:

It requires the mysqlnd driver... if it isn't installed on your webspace you will have to work with BIND_RESULT & FETCH!

Function MySQL Native Driver Only

Available only with mysqlnd:

Note: mysqli_stmt::get_result() is only available at PHP v5.3.0 or above

I'm gonna search for another alternative.

Saludos ;)

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download