/ / Prečo toto základné mysqli pripravené vyhlásenie nefunguje? - mysqli, pripravené vyhlásenie

Prečo nie je táto základná mysqli pripravená výpovedná práca? - mysqli, pripravené vyhlásenie

Snažím sa urobiť jednoduchý dotaz SELECT na môjdatabázy s MySQLi pripravené vyhlásenie. Čítal som veľa návodov a nasledoval ich veľmi úzko, ale z nejakého dôvodu stále nefunguje. Nižšie je kód dopytu:

<?php
$user = "abc";
$dbconn = new mysqli("localhost", "my_user", "my_password", "my_table");

if (mysqli_connect_errno()) {
printf("Connect failed: %sn", mysqli_connect_error());
exit();
}
if ($stmt = $dbconn->prepare("SELECT id, pass  FROM my_table WHERE user=?")) {
$stmt->bind_param("s",$user);
$stmt->execute();
$stmt->bind_result($db_id,$db_pass);
$stmt->fetch();
$stmt->close();
}
$dbconn->close();
echo $db_id . " " . $db_pass;
?>

Keď som spustiť, to nehovorí, že mámchyba pripojenia, ale chyba servera. Mám slušné množstvo skúseností PHP, ale som úplne nový MySQLi pripravené vyhlásenia. Akákoľvek pomoc by sa veľmi ocenila; Ďakujem za Tvoj čas.

odpovede:

2 pre odpoveď č. 1

Pre niekoho, kto má slušné množstvo skúseností s PHP, ste dosť ľahkomyslný o hlásení chýb.
Ako ste neposkytli chybové hlásenie, môžeme len hádať, že je to pravidelná odpoveď webového servera s 503 odpoveďami.
V tomto prípade musíte na serveri vyhľadať chybové hlásenie o aktuálnom chybovom hlásení, prečítať si ho a vykonať príslušné kroky na jeho opravu.

Kontrola $dbconn->error tiež pomáha.

Existujú 2 spôsoby hlásenia chýb:

  • zobrazenie na obrazovke (slušné pri vývoji, ale neprijateľné pri výrobe)
  • ich zapisovanie do logu (absolútna potreba na produkčnom serveri)

za toto správanie sú zodpovedné niektoré nastavenia.

  • display_errors hovorí PHP, či by mal zobrazovať chyby alebo nie
  • log_errors hovorí PHP, či by mal zaznamenávať chyby alebo nie. štandardne sa prihlasuje do web-serverov "error_log
  • error_log hovorí php názov súboru, kde musia byť napísané chyby PHP

nastavte vhodné nastavenia pomocou svojich hosťovacích nástrojov.
V opačnom prípade by ste nemohli používať tento hostiteľ napriek tomu - programátor jednoducho nemôže pracovať, ak sa mu nepodarí zobraziť chybové hlásenia.

Akonáhle sa dostanete ruky na chybové hlásenie, je veľmi užitočné, aby postúpil priamo do formulára vyhľadávania Google. S najväčšou pravdepodobnosťou niekto už stretol rovnaké a dokonca spýtal sa na Stackoverflow


1 pre odpoveď č. 2

Prvá vec, ktorú vidím je, že riadok:

$dbconn = new mysqli("localhost", "my_user", "my_password", "my_table");

By mala byť:

$dbconn = new mysqli("localhost", "my_user", "my_password", "my_db");

Skúste to a uvidíte, čo sa stane.