Πρόβλημα με mysql_fetch_row

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
dionysosx
Δημοσιεύσεις: 22
Εγγραφή: 01 Μάιος 2011 21:15

Πρόβλημα με mysql_fetch_row

Δημοσίευση από dionysosx » 26 Ιουν 2011 21:19

Εχώ πρόβλημα με την εντολή
$row = mysql_fetch_row($result)
Μού βγάζει το εξής error
Warning: mysql_fetch_row() expects parameter 1 to be resource, object given in C:\xampp\htdocs\book\user_auth.php on line 100
και ο κώδικας είναι

function searchb($book, $author)

{
// connect to db
$conn = db_connect();


$result = $conn->query("select title from ae_gallery
where title='$book'
or author = '$author'") or die(mysql_error());

if (!$result) {
echo 'Could not run query: ' . mysql_error();
exit;
}
if ($result->num_rows>0)
{
$row = mysql_fetch_assoc($result);
}

else
echo 'Sorry..!No Such Book';
};

Τί μπορεί να φταίει;; Ευχαριστώ πολύ

Άβαταρ μέλους
Christianago
Δημοσιεύσεις: 332
Εγγραφή: 12 Νοέμ 2009 13:36

Πρόβλημα με mysql_fetch_row

Δημοσίευση από Christianago » 26 Ιουν 2011 21:42

Με τη $row = mysql_fetch_assoc($result); θες να πεις.
Δεν εδωσες τον πινακα ae_gallery της βασης σου να δουμε.
Δυο βασικες αιτιες που συμβαινει αυτο:
- Τα $book, $author δεν εχουν καποια τιμη οταν εκτελειται η συναρτηση σου.
- Τα $book, $author εχουν τιμες, αλλα το encoding να μη συμφωνει με τον πινακα της βασης σου.

dionysosx
Δημοσιεύσεις: 22
Εγγραφή: 01 Μάιος 2011 21:15

Πρόβλημα με mysql_fetch_row

Δημοσίευση από dionysosx » 26 Ιουν 2011 22:37

Sorry μπερδεύτηκα... Απλά χρησιμοποίησα και τις 2 μεθόδους
mysql_fetch_assoc και mysql_fetch_array..
Οι μεταβλητές $book και $author έχουν σίγουρα τιμή γιατί με την εντολή
echo $book,$author;
εμφάνισε τα σωστά αποτελέσματα.. Όσο για το encoding έχω ρυθμίσει η βάση μου να χρησιμοποιεί utf_unicode_ci πώς μπορώ να ελέγξω τι encinding έχουν τα $book $author;; Η γίνεται κάπως να ρυθμίσω εξαρχής το enconding από τα textboxes ( ο χρήστης γράφει το book,author) να είναι utf_unicode;;

Άβαταρ μέλους
Christianago
Δημοσιεύσεις: 332
Εγγραφή: 12 Νοέμ 2009 13:36

Πρόβλημα με mysql_fetch_row

Δημοσίευση από Christianago » 26 Ιουν 2011 23:40

Κώδικας: Επιλογή όλων

mysql_query("SET names 'y'")
οπoυ y, το collate του πινακα/πεδιου που θελεις.

dionysosx
Δημοσιεύσεις: 22
Εγγραφή: 01 Μάιος 2011 21:15

Πρόβλημα με mysql_fetch_row

Δημοσίευση από dionysosx » 28 Ιουν 2011 14:05

Πφφφφ,,συνεχίζω να έχω το ίδιο πρόβλημα ...

Αυτο που κατάφερα είναι να βρώ οτι η βάση έχει κωδικοποίηση latin1 και οι χαρακτήρες έχουν ASCII .. Οπότε πιθανώς να παίζει πρόβλημα με την κωδικοποίηση..Πως να τους αλλάξω και ποια κωδικοποίηση να βάλω;; Νομίζω πως UTF-8 είναι καλύτερη..

Συγκερκιμένα όταν δίνω τις εντολές
$link = mysql_connect('localhost', 'root', '****');
$charset = mysql_client_encoding($link);
echo "The current character set is: $charset\n";
Μου εμφανίζει latin1

και στην εντολή
echo mb_detect_encoding($book);
εμφανίζει ASCII

αλλά όταν πηγαίνω στο localhost/phpmyadmin γράφει:
Σύνολο χαρακτήρων MySQL: UTF-8 Unicode (utf8)

gvre
Δημοσιεύσεις: 992
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Πρόβλημα με mysql_fetch_row

Δημοσίευση από gvre » 28 Ιουν 2011 15:40

Το warning που σου βγάζει λέει
Warning: mysql_fetch_row() expects parameter 1 to be resource, object given in C:\xampp\htdocs\book\user_auth.php on line 100
H mysql_fetch_row περιμένει ως όρισμα resource και του δίνεις object. Μπορείς να στείλεις τον κώδικα της $conn->query να δούμε τι επιστρέφει;

dionysosx
Δημοσιεύσεις: 22
Εγγραφή: 01 Μάιος 2011 21:15

Πρόβλημα με mysql_fetch_row

Δημοσίευση από dionysosx » 28 Ιουν 2011 15:52

Τι ακριβώς είναι το όρισμα resource;;

$result = $conn->query("select title from ae_gallery
where title='$book'
or author = '$author'") or die(mysql_error());
και τα $book,$author δεν είναι άδεια γιατι με echo $book,$author εμφανίζει αυτά που του είχα δώσει απο τα textboxes προηγουμένως..

gvre
Δημοσιεύσεις: 992
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Πρόβλημα με mysql_fetch_row

Δημοσίευση από gvre » 28 Ιουν 2011 15:56

Resource επιστρέφει η mysql_query.
Στείλε την υλοποίηση της μεθόδου query την οποία καλείς με $conn->query().

Άβαταρ μέλους
Christianago
Δημοσιεύσεις: 332
Εγγραφή: 12 Νοέμ 2009 13:36

Πρόβλημα με mysql_fetch_row

Δημοσίευση από Christianago » 28 Ιουν 2011 16:00

Μπορεις να δωσεις τον πινακα σου με καποια δειγματικα δεδομενα για να δουμε τι παιζει;
Παντως δεν νομιζω να ειναι προβλημα η κωδικοποιηση στην περιπτωση σου.

dionysosx
Δημοσιεύσεις: 22
Εγγραφή: 01 Μάιος 2011 21:15

Πρόβλημα με mysql_fetch_row

Δημοσίευση από dionysosx » 28 Ιουν 2011 16:02

δεν καταλαβα ακριβώς τι να στείλω..τον κώδικα τον postara στο πρώτο post πάνω πάνω..

gvre
Δημοσιεύσεις: 992
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Πρόβλημα με mysql_fetch_row

Δημοσίευση από gvre » 28 Ιουν 2011 16:06

Την υλοποίηση της μεθόδου query(). Την έχεις φτιάξει εσύ ή χρησιμοποιείς κάποιο library; Στείλε και το περιεχόμενο της συνάρτησης db_connect() αν μπορείς.

gvre
Δημοσιεύσεις: 992
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Πρόβλημα με mysql_fetch_row

Δημοσίευση από gvre » 28 Ιουν 2011 16:14

Εναλλακτικά, δώσε

Κώδικας: Επιλογή όλων

var_dump($result);exit;
μετά το

Κώδικας: Επιλογή όλων

$result = $conn->query("select title from ae_gallery 
where title='$book' 
or author = '$author'") or die(mysql_error());
και στείλε το αποτέλεσμα.

dionysosx
Δημοσιεύσεις: 22
Εγγραφή: 01 Μάιος 2011 21:15

Πρόβλημα με mysql_fetch_row

Δημοσίευση από dionysosx » 28 Ιουν 2011 16:18

μπερδευτηκα λίγο.. Η query δεν είναι default συνάρτηση της php/mysql ;; Δεν την έχω υλοποιήσει κάπου

function db_connect()
{
$result = new mysqli('localhost', 'root', '****', '******');
if (!$result)
throw new Exception('Could not connect to database server');
else
return $result;
}

gvre
Δημοσιεύσεις: 992
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Πρόβλημα με mysql_fetch_row

Δημοσίευση από gvre » 28 Ιουν 2011 16:31

Είναι αλλά εγώ δεν το γνώριζα επειδή δεν ήξερα αν χρησιμοποιείς κάποιο library ή όχι.

Άλλαξε το

Κώδικας: Επιλογή όλων

$row = mysql_fetch_assoc($result); 
σε

Κώδικας: Επιλογή όλων

$row = $result->fetch_assoc();
και δοκίμασε ξανά. Αν δε δουλέψει κάνε το var_dump που σου έγραψα παραπάνω και στείλε το αποτέλεσμα.

gvre
Δημοσιεύσεις: 992
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Πρόβλημα με mysql_fetch_row

Δημοσίευση από gvre » 28 Ιουν 2011 16:39

Επίσης η db_connect() κάνει throw ένα Exception το οποίο δεν κάνεις catch πουθενά (άσχετο αλλά αφού το είδα είπα να στο πω). Δες στο manual του mysqli (Example #1) πώς μπορείς να διαχειριστείς την περίπτωση σφάλματος σύνδεσης στη βάση.

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης