Intereting Posts
Автоматический выход из системы Zend после бездействия Поиск существующей электронной почты и имени пользователя в базе данных OPENSSL file_get_contents (): Не удалось включить криптографию Добавьте класс CSS ко всем изображениям на странице с шириной менее 480 пикселей с помощью DomDocument php includes есть ли способ включить файл, относящийся только к этому документу? Как предотвратить отправку писем, отправленных через PHP mail (), в спам? Как преобразовать это шифрование C # Rijndael в PHP? Аутентификация приложения FACEBOOK – PHP Как заставить DOCUMENT_ROOT работать как с локальным хостом, так и с веб-хостом? php.ini include_path Проверьте, существует ли изображение на удаленном URL-адресе Установка PHP на окна Подсчитайте, как часто слово встречается в тексте в PHP Нет почты, полученной во входящих почтовых ящиках с XAMPP 1.8.0, MercuryMail и mail () PHP Script для преобразования файлов .CSV в .XML

Предупреждение при вызове mysqli_error ()

Возможный дубликат:
Помощь в предупреждении PHP?

Я пытаюсь объединить три таблицы из базы данных, чтобы отображать выбранные пользователями категории, но я получаю следующую ошибку.

Warning: mysqli_error() expects exactly 1 parameter, 0 given in 

Я думаю, что я делаю что-то неправильно, когда я запрашиваю свою базу данных.

Вот код ниже.

 // Query member data from the database and ready it for display $mysqli = new mysqli("localhost", "root", "", "sitename"); $dbc = mysqli_query($mysqli,"SELECT users.*, categories.*, users_categories.* FROM users_categories INNER JOIN users_categories ON users_categories.user_id = users.user_id JOIN categories ON users_categories.user_id = users.user_id WHERE users_categories.user_id=3"); if (!$dbc) { // There was an error...do something about it here... print mysqli_error(); } //Users entered category loop while ($row = mysqli_fetch_assoc($dbc)) { if (! empty($row['category'])) { echo '<div class="skill-info">'; echo '<p>' , htmlspecialchars($row['category']) , '</p>'; } } 

Вот моя структура таблиц MySQL.

 CREATE TABLE users ( user_id INT UNSIGNED NOT NULL AUTO_INCREMENT, user_name VARCHAR(255) NOT NULL, PRIMARY KEY (user_id) ); CREATE TABLE categories ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, parent_id INT UNSIGNED NOT NULL DEFAULT 0, category VARCHAR(255) NOT NULL, url VARCHAR(255) NOT NULL, PRIMARY KEY (id), INDEX parent (parent_id) ); CREATE TABLE users_categories ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, user_id INT UNSIGNED NOT NULL, category_id INT UNSIGNED NOT NULL, PRIMARY KEY (id) ); 

Теперь я получаю следующую ошибку

 Not unique table/alias: 'users_categories' 

Как это исправить?

Спасибо всем за помощь. Есть ли способ, которым я могу вознаградить каждого из них за помощь здесь в stackoverflow вместо одного человека?

Solutions Collecting From Web of "Предупреждение при вызове mysqli_error ()"

Вы забыли передать требуемый аргумент mysqli_error () . + Изменить

 print mysqli_error(); 

в

 print mysqli_error($mysqli); 

После внесения исправления вы сможете увидеть сообщение об ошибке и продолжить отладку.

FYI: Похоже, вы странно смешиваете использование OO и процедурного стиля mysqli. Вы должны придерживаться того или другого.

Вы должны вызвать mysqli_error с параметром:

 if (!$dbc) { print mysqli_error($mysqli); } 

Редакция:

Вы присоединяетесь к двум таблицам с одинаковыми именами. Думаю, в FROM вы сделали опечатку. Разве это не должно быть FROM users ? users таблицы отображаются в списке столбцов, но у вас их нет в FROM или JOIN.

 SELECT users.*, categories.*, users_categories.* FROM users INNER JOIN users_categories ON users_categories.user_id = users.user_id JOIN categories ON users_categories.user_id = users.user_id WHERE users_categories.user_id=3 

Есть много комментариев о том, как исправить строку mysqli_error, но есть две проблемы с самим SQL:

  1. Вы дважды присоединяетесь к таблице users_categories и не присоединяетесь к таблице users вообще.
  2. Второй ON идентичен первому, поэтому он ссылается на неправильные столбцы в неправильных таблицах.

Это должно работать лучше:

 SELECT users.*, categories.*, users_categories.* FROM users_categories INNER JOIN users ON users_categories.user_id = users.user_id INNER JOIN categories ON users_categories.category_id = categories.id WHERE users_categories.user_id=3 

mysqli_error требует ссылку, попробуйте:

 print mysqli_error($mysqli); 

Этот запрос является проблемой. Сначала проверьте запрос в PhpMyAdmin или любом другом mySQL-клиенте, который у вас есть, и вы увидите, что он не работает.