Προς το περιεχόμενο

fetch και περασμα μεταβλητων με PDO


slevinkelevra

Προτεινόμενες αναρτήσεις

Καλησπερες

 

Χρησιμοποιω pdo μαζι με postgresql. Κανω ενα select και τα αποτελεσματα θελω να τα περασω σε απλες μεταβλητες php. Δειτε τον παρακατω κωδικα

$stmt = $dbh->prepare("SELECT * FROM pinakasMou WHERE kati = :un");
$stmt->bindParam(':un', $un, PDO::PARAM_STR);
$um=$miaMetabliti;
$stmt->execute();
while($row = $stmt->fetch()) {  
$a = $row['a'];
$b = $row['b'];  
$c = $row['c'];
}

Προσπαθω να περασω τις τιμες που ερχονται απο το select σε απλες php μεταβλητες. Αυτο δεν γινεται και δεν μπορω να καταλαβω και γιατι.

 

Για παραδειγμα τις περναω στις μεταβλητες και μετα προσπαθω να τυπωσω

echo $a."</br>";
echo $row['a]."</br>";
echo $b."</br>";
echo $c."</br>";

Ενω το query εκτελειται κανονικα, τιποτα απο τα παραπανω δεν τυπωνει.

Το fetch mode το εχω ορισει ως fecth_assoc.

 

Καμια ιδεα?

 

Ευχαριστω πολυ.

 

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Καλησπερες

 

Χρησιμοποιω pdo μαζι με postgresql. Κανω ενα select και τα αποτελεσματα θελω να τα περασω σε απλες μεταβλητες php. Δειτε τον παρακατω κωδικα

$stmt = $dbh->prepare("SELECT * FROM pinakasMou WHERE kati = :un");
$stmt->bindParam(':un', $un, PDO::PARAM_STR);
$um=$miaMetabliti;
$stmt->execute();
while($row = $stmt->fetch()) {  
$a = $row['a'];
$b = $row['b'];  
$c = $row['c'];
}

Προσπαθω να περασω τις τιμες που ερχονται απο το select σε απλες php μεταβλητες. Αυτο δεν γινεται και δεν μπορω να καταλαβω και γιατι.

 

Για παραδειγμα τις περναω στις μεταβλητες και μετα προσπαθω να τυπωσω

echo $a."</br>";
echo $row['a]."</br>";
echo $b."</br>";
echo $c."</br>";

Ενω το query εκτελειται κανονικα, τιποτα απο τα παραπανω δεν τυπωνει.

Το fetch mode το εχω ορισει ως fecth_assoc.

 

Καμια ιδεα?

 

Ευχαριστω πολυ.

Φαντάζομαι πως περιμένεις 1 αποτέλεσμα μόνο, αλλιώς τα $abc γίνονται overwrite μεσα στην while. Επίσης κάνε απλά extract() τον πίνακα row αντί να το αναθέτεις σε μεταβλητές όπως τώρα (τα keys θα γίνουν οι μεταβλητές). 

Πριν κάνεις fetch πρέπει να ελένξεις το αποτέλεσμα του execute, καθώς μπορεί κάλλιστα να μην εκτελείται το query.

 

Όρισε την μεταβλητή σου πριν το binding ή ακόμα καλύτερα δώσε την στο execute() σε array μορφή. Επειδή είναι πολλά που μπορεί να συμβάινουν πρώτα βάλε το εξής:

try {
// εδώ κάνε το prepare & execute
} catch (PDOException $e) {
echo 'Error: ' . $e->getMessage();
}

Ελένξε αν παίρνεις κανένα error. Στη συνέχεια κράτα σε μεταβλητή το αποτέλεσμα του execute

($result = $stmt->execute(πίνακας με τις παραμέτρους) )

και δες αν σου επιστρέφει TRUE/FALSE.

Αν σου επιστρέφει TRUE βγάλε το fetch έξω απο την while, για δοκιμή και κάνε var_dump($row) για να δεις τι παίζει. Δεν ξέρω αν αυτός είναι ο κωδικάς σου ή για συντομία το έγραψες έτσι πάντως είναι πολλά τα λάθη που μπορούν να συμβούν και δεν τα εξετάζεις πουθενά.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...