/ / Чому ця основна підготовлена ​​операція mysqli не працює? - mysqli, підготовлена-заява

Чому цей основний mysqli не підготовлений виклад роботи? - mysqli, приготований-висловлювання

Я намагаюся зробити простий запит 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_log
  • error_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");

Спробуйте і подивіться, що станеться.