Я намагаюся зробити простий запит SELECT до могобаза даних із підготовленим оператором MySQLi. Я прочитав численні навчальні посібники і дуже уважно їх стежив, але з якихось причин це все ще не працює. Нижче наведено код запиту:
<?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;
?>
Коли я запускаю, це не означає, що я маюпомилка підключення, але помилка сервера. У мене є пристойний досвід роботи з PHP, але я абсолютно новачок у підготовлених заявах MySQLi. Будь-яка допомога буде вдячна; спасибі за ваш час.
Відповіді:
2 для відповіді № 1Для тих, хто має пристойний досвід роботи з PHP, ви досить легковажно ставитеся до повідомлення про помилки.
Оскільки ви не надали повідомлення про помилку, ми можемо лише здогадуватися, що це звичайна відповідь 503 веб-сервера.
У цьому випадку вам доведеться шукати в журналі_ помилок сервера справжнє повідомлення про помилку, прочитати його та вжити відповідних дій для його виправлення.
Перевірка $dbconn->error
також допомагає.
Існує 2 способи повідомлення про помилки:
- їх показ на екрані (гідний при розробці, але неприйнятний у виробництві)
- запис їх у журнал (абсолютна необхідність на виробничому сервері)
за цю поведінку відповідають деякі налаштування ini.
display_errors
повідомляє PHP, де він повинен відображати помилки чи ніlog_errors
повідомляє PHP, де він повинен реєструвати помилки чи ні. за замовчуванням він входить у веб-сервери "error_logerror_log
повідомляє php ім'я файлу, де повинні бути записані помилки PHP
будь-ласка, встановіть відповідні налаштування за допомогою інструментів хостингу.
В іншому випадку ви все одно не зможете використовувати цей хост - програміст просто не може працювати, якщо він не може побачити повідомлення про помилки.
Отримавши повідомлення про помилку, надзвичайно корисно переслати його безпосередньо у форму пошуку Google. Швидше за все хтось уже стикався з тим самим і навіть запитав це на Stackoverflow
1 для відповіді № 2
Перше, що я бачу, це те, що рядок:
$dbconn = new mysqli("localhost", "my_user", "my_password", "my_table");
Має бути:
$dbconn = new mysqli("localhost", "my_user", "my_password", "my_db");
Спробуйте і подивіться, що станеться.