S'il vous plaît pardonnez-moi la possibilité de la stupidité de cette question, mais je viens de commencer à utiliser des déclarations préparées. Je sais que cette requête particulière fonctionne, comme je l'ai testé avec des méthodes procédurales non préparées. Le voici:Déclaration préparée ne retournant rien
$name = 'introduction';
$mysqli = new mysqli('localhost', 'user', 'pass', 'db') or die('There was a problem connecting to the database.');
$stmt = $mysqli->prepare("SELECT name, content FROM sections WHERE name = ?");
$stmt->bind_param('s', $name);
$stmt->execute();
$stmt->bind_result($content);
$stmt->fetch();
echo $content;
$stmt->close();
Un conseil ou des points dans la bonne direction sont grandement appréciés!
EDIT 1: Juste une mise à jour sur mes progrès que j'essaye de dépanner. Je me suis rendu compte que, puisque j'ai une colonne id comme index dans la table des sections, j'ai dû lier cela en conséquence, étant donné la déclaration ci-dessus sur php.net, (merci encore, Bill).
Voici le nouveau code:
$name = 'introduction';
$mysqli = new mysqli('localhost', 'user', 'pass', 'db') or die('There was a problem connecting to the database.');
$stmt = $mysqli->prepare("SELECT name, content FROM sections WHERE name = ?");
$stmt->bind_param('s', $name);
$stmt->execute();
$stmt->bind_result($id, $name, $content);
$stmt->fetch();
echo $content;
$stmt->close();
Merci encore à tous ceux qui peuvent offrir des suggestions. (Je suis curieux: je trouve qu'il est difficile de débogage lorsque vous utilisez le style POO des déclarations préparées de cette manière est là, par exemple, un moyen facile de voir simplement la requête qui a été effectivement utilisé.?)
EDIT 2 : Salut, et merci de faire ce test, je l'apprécie vraiment. Je comprends la question que vous avez été obligé de poser, car je me suis énervé pendant un bon moment maintenant. Je dois dire que ça existe.
Si je fais ce qui suit, comme un exemple rapide et sale:
$name = 'introduction';
@mysql_connect('host', 'user', 'pass');
@mysql_select_db('db');
$query = "SELECT name,content FROM sections WHERE name = '$name'";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_object($result)) {
$content = $row->content;
echo $content;
}
Mes données apparaît et tout va bien. Toutefois, si je fais ce qui suit:
$name = 'introduction';
$mysqli = new mysqli('localhost', 'user', 'pass', 'db') or die('There was a problem connecting to the database.');
$stmt = $mysqli->prepare("SELECT name, content FROM sections WHERE name = ?");
$stmt->bind_param('s', $name);
$stmt->execute();
$stmt->bind_result($name, $content);
$stmt->fetch();
echo $content;
$stmt->close();
Ce que je crois est correcte (ne hésitez pas à crier sinon, bien sûr), je ne reçois rien. De plus, avec ce code, quand je fais une validation html (juste au cas où), je reçois un avertissement de serveur interne (500), que je considère être un problème avec le code sql. Suis-je juste fou?
Merci pour votre aide continue, c'est très apprécié! Eh bien, je me sens comme un idiot, mais, je l'ai corrigé, et Bill, votre question était juste sur. Je ne sais pas comment j'ai réussi à mettre des détails de base de données incorrects et à les manquer si longtemps, mais c'est précisément ce qui s'est passé.
Merci encore pour votre patience et votre volonté d'aider.
Veuillez ne pas publier de réponses en tant que mises à jour à votre question - c'est pour cela que le lien Modifier est pour –
@John: Merci pour cela, je viens d'être informé par un autre utilisateur, et j'ai édité ma question originale. Excuses. –