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ď č. 1Pre 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 nielog_errors
hovorí PHP, či by mal zaznamenávať chyby alebo nie. štandardne sa prihlasuje do web-serverov "error_logerror_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.