Πρόβλημα με mysqli bind_result & fetch

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

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

Απάντηση
Antonis78
Δημοσιεύσεις: 60
Εγγραφή: 24 Φεβ 2006 14:41

Πρόβλημα με mysqli bind_result & fetch

Δημοσίευση από Antonis78 » 19 Οκτ 2010 12:12

Καλημέρα σε όλους!

έχω σε μία σελίδα τον παρακάτω κώδικα:

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

<?php
      $mysqli = new MySQLi&#40;$db_host, $db_user, $db_pass, $db_select&#41;;
					
      $stmt = $mysqli->prepare&#40;"SELECT signs.sign_title, signs.sign_description, categories.cat_id, categories.cat_title FROM signs INNER JOIN categories ON signs.sign_category = categories.cat_id WHERE signs.sign_id = ?"&#41;;
      $stmt->bind_param&#40;"i", $sign_id&#41;;
      $stmt->execute&#40;&#41;;
      $stmt->bind_result&#40;$sign_title, $sign_description, $sign_category_id, $sign_category_title&#41;;
      $stmt->fetch&#40;&#41;;
      $stmt->free_result&#40;&#41;;
      $stmt->close&#40;&#41;;
?>
<?php echo $sign_title; ?><br />
<?php echo $sign_description; ?>
Το περίεργο είναι ότι η μεταβλητή $sign_description επιστρέφει άδεια ενώ αν κάνω την ίδια query procedural λειτουργεί κανονικά. Καμιά ιδέα κανείς;

EDIT: Δοκίμασα να αλλάξω το data type από longtext σε varchar(255) και δούλεψε. Το πρόβλημα είναι ότι χρειάζομαι περισσότερους από 255 χαρακτήρες οπότε πρέπει να το αλλάξω πάλι σε longtext όπου δεν δουλεύει!!!! :doh:

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Πρόβλημα με mysqli bind_result & fetch

Δημοσίευση από korgr » 19 Οκτ 2010 14:27

Γιατί Longtext και όχι Text?

Antonis78
Δημοσιεύσεις: 60
Εγγραφή: 24 Φεβ 2006 14:41

Πρόβλημα με mysqli bind_result & fetch

Δημοσίευση από Antonis78 » 19 Οκτ 2010 14:32

Επειδή στο συγκεκριμένο πεδίο θα αποθηκεύεται σχετικά μεγάλο κείμενο. Θα δοκιμάσω να το κάνω MediumText ή Text και θα δω! Μου κάνει εντύπωση όμως γιατί η mysqli δεν μπορεί να διαχειριστεί τέτοιο πεδίο σε ΟΟ και μπορεί σε procedural!

EDIT:
Το βρήκα: έπρεπε να προσθέσω το "$stmt->store_result();" πριν το "$stmt->bind_result($sign_title, $sign_description, $sign_category_id, $sign_category_title);".

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Πρόβλημα με mysqli bind_result & fetch

Δημοσίευση από korgr » 19 Οκτ 2010 18:28

Τελικά απορώ τι βρίσκετε στην mysqli.
Στο δικό μου framework το ίδιο είναι:

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

<?php 
$db = new db&#40;&#41;;
$row = $db->getRecord&#40;"SELECT signs.sign_title as title, 
                                     signs.sign_description as description, 
                                     categories.cat_id as cat_id, 
                                     categories.cat_title as title 
                                     FROM signs 
                                     INNER JOIN categories ON 
                                     signs.sign_category = categories.cat_id 
                                     WHERE signs.sign_id ='$sign_id' "&#41;;
echo $row->title."<br />";
echo $row->description."<br />";
?>

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

Πρόβλημα με mysqli bind_result & fetch

Δημοσίευση από gvre » 19 Οκτ 2010 22:03

korgr έγραψε:Τελικά απορώ τι βρίσκετε στην mysqli.
Στο δικό μου framework το ίδιο είναι:

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

<?php 
$db = new db&#40;&#41;;
$row = $db->getRecord&#40;"SELECT signs.sign_title as title, 
                                     signs.sign_description as description, 
                                     categories.cat_id as cat_id, 
                                     categories.cat_title as title 
                                     FROM signs 
                                     INNER JOIN categories ON 
                                     signs.sign_category = categories.cat_id 
                                     WHERE signs.sign_id ='$sign_id' "&#41;;
echo $row->title."<br />";
echo $row->description."<br />";
?>
Οι λόγοι για τους οποίους κάποιοι χρησιμοποιούν το mysqli αντί κάποιο framework μπορεί να είναι διάφοροι (δεν έχουν τις γνώσεις να φτιάξουν κάποιο db abstraction layer, δεν ξέρουν ότι υπάρχουν τέτοια layers, κλπ). Ό,τι και να χρησιμοποιείται πάντως θα πρέπει να είναι γρήγορο και να υποστηρίζει prepared statements (εκτός από όλα τα υπόλοιπα).

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Πρόβλημα με mysqli bind_result & fetch

Δημοσίευση από Apostolis_38 » 20 Οκτ 2010 00:06

What is PHP's mysqli Extension?

The mysqli extension, or as it is sometimes known, the MySQL improved extension, was developed to take advantage of new features found in MySQL systems versions 4.1.3 and newer. The mysqli extension is included with PHP versions 5 and later.

The mysqli extension has a number of benefits, the key enhancements over the mysql extension being:

* Object-oriented interface
* Support for Prepared Statements
* Support for Multiple Statements
* Support for Transactions
* Enhanced debugging capabilities
*Embedded server support

http://gr.php.net/manual/en/mysqli.overview.php

Πάντως απ' όσο ξέρω για τα prepared statements προτιμάτε.

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Πρόβλημα με mysqli bind_result & fetch

Δημοσίευση από korgr » 20 Οκτ 2010 02:02

Με ότι βολεύεται κανένας. Το αποτέλεσμα της δουλειάς μετράει πάνω απ' όλα!
Όχι το εργαλείο...

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Πρόβλημα με mysqli bind_result & fetch

Δημοσίευση από Apostolis_38 » 20 Οκτ 2010 18:21

Σαφώς.
Αλλωστε το λέει κι ο λαός. Περί ορέξεως... :D

Να σε ρωτήσω όμως εγώ κάτι.
Τι εννοείς ως framework.
Για define framework :P

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Πρόβλημα με mysqli bind_result & fetch

Δημοσίευση από korgr » 20 Οκτ 2010 19:31

Apostolis_38 έγραψε:Σαφώς.
Αλλωστε το λέει κι ο λαός. Περί ορέξεως... :D

Να σε ρωτήσω όμως εγώ κάτι.
Τι εννοείς ως framework.
Για define framework :P
Μια συλλογή από php classes ευρείας χρήσης.
Νέες εντολές που σου λύνουν τα χέρια κάνοντας πιο γρήγορα τη δουλεια σου και γράφοντας πιο καθαρό κώδικα.

Ένα μικρό παράδειγμα:

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

			if&#40;!$messages->hasErrors&#41;&#123;
				if&#40;$id&#41;&#123;
					// edit mode
					if&#40;!$content->recordExists&#40;$id, 'fields'&#41;&#41; $messages->addError&#40;"Η εγγραφή του πεδίου δεν βρέθηκε!"&#41;;
					if&#40;!$messages->hasErrors&#41;&#123; 
					// no errors proceed to edit
							$system->modifyField&#40;$id, $vars&#41;;
							$messages->addMessage&#40;"Η επεξεργασία των στοιχείων του πεδίου, ολοκληρώθηκε με επιτυχία!"&#41;;		
					&#125;else&#123;
						$_REQUEST&#91;'fieldID'&#93; = $id; // display edit form again
					&#125;
				&#125;else&#123;
					//add mode
					$system->addField&#40;$vars&#41;;
					$messages->addMessage&#40;"Η προσθήκη των στοιχείων του πεδίου, ολοκληρώθηκε με επιτυχία!"&#41;;		
				&#125;
			&#125;
Το ανωτέρω προσθέτει ή τροποποιεί ένα field σε table της mysql
Όχι εγγραφή!
Πεδίο σε πίνακα, you know what I mean ;)

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Πρόβλημα με mysqli bind_result & fetch

Δημοσίευση από Apostolis_38 » 20 Οκτ 2010 21:18

Δηλαδή μέσες-άκρες ότι κάνουν τα γνωστά frameworks (codeigniter π.χ.) ή κάνω λάθος κι έχεις φτιάξει κάτι τελείως διαφορετικό;

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Πρόβλημα με mysqli bind_result & fetch

Δημοσίευση από korgr » 20 Οκτ 2010 21:43

Όλα τα frameworks κάπως έτσι δουλεύουν.
Το θέμα είναι πως το δικό σου το επεκτείνεις το διαμορφώνεις και γενικά το κάνεις ότι θες.
Αυτό που μετράει είναι πως εκμεταλεύεσαι και πως συνδυάζεις τις δυνατότητες ώστε να παρουσιάσεις καλό αποτέλεσμα.
Εγώ είπα "ΤΕΡΜΑ δεν ξαναφτιάχνω admin φόρμα" και τα κατάφερα!

Σύντομα θα επανέλθω με νεότερα στην πρώτη μου beta στο version 3 :wink:

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Πρόβλημα με mysqli bind_result & fetch

Δημοσίευση από Apostolis_38 » 20 Οκτ 2010 22:15

Ok, περιμένω γιατί έχω απορίες.
Αλλά αρκετά το ρίξαμε στο off topic :P

Απάντηση

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

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

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