user2067101
user2067101

Reputation: 103

MySQL database manipulation with PHP

Spent the last few days researching this, but I think I'm just not getting it... I can usually do what I need to with PHP but am new to MySQL

I set up a MySQL database to hold some photos. The photo's are in separate galleries (gallery is denoted by a gallery field). The photo's are also indexed by an id number.

When displaying the photos (it all works perfectly up to now...), I would like to be able to jump to the next or previous photo in the gallery, but can't just us the next or previous id, as it could be from a different group (found that out the hard way ;)

from my research, I feel like I need to use this:

$sql = "SELECT id FROM gphoto WHERE gallery='$g' ORDER BY id DESC";
$query = mysqli_query($db_conx, $sql);

But $query doesn't seem to give me what I expect. It feels like $query it should contain an array if all id's which contain gphoto, and I should be able to just find my current id number, then jump one up or down, but when I try to read $query I get:

Cannot use object of type mysqli_result as array

I'm obviously misunderstanding something Some people have suggested: $result = mysqli_fetch_assoc($query);

I had tried this after reading the online manual extensively, but for some reason it only lists one item... in this case the last record.

If I run it as ASC, it lists the first. Should it be listing all records like I expect, or is it a different command?

C)

Upvotes: 1

Views: 521

Answers (3)

Ray
Ray

Reputation: 2728

if ($result = mysqli_query($db_conx, $query)) {
    /* fetch associative array */
    while ($row = mysqli_fetch_assoc($result)) {
        //mysqli_fetch_assoc fetches data by row
    }
}

You are only getting 1 row, thats how mysqli_fetch_assoc works. If you want the entire result to be an array of the rows, use mysqli_fetch_all

I would recommend using PDO however like @ceadreak suggested.

Upvotes: 0

ceadreak
ceadreak

Reputation: 1684

+1 for Fabio's response.

A good advice is to use PDO interface for accessing databases in PHP. It's a meaningful interface to construct, execute and fetch the results of your queries without the knowledge of the used db driver.

http://php.net/manual/en/book.pdo.php

Upvotes: 2

Fabio
Fabio

Reputation: 23510

You need to fetch data from database after executing your query to handle mysqli object you have just created

$query = mysqli_query($db_conx, $sql);
$result = mysqli_fetch_assoc($query);

Now you have the array you were looking for in your variable $result

Upvotes: 0

Related Questions