mysqli_error () ожидает ровно 1 параметр, 0

Я пытаюсь окунуться в mysql. Может кто-нибудь сказать мне, почему этот запрос mysql не работает? Я получаю следующую ошибку:

Предупреждение: mysqli_error () ожидает ровно 1 параметр, 0 указан в /home/freebet2/public_html/test.php в строке 11

test.php

<?php require_once($_SERVER['DOCUMENT_ROOT'].'/includes/db.php'); $conn = db_connect(); $result = $conn->query("ALTER TABLE users ADD COLUMN refer_old INT(10) AFTER refer_id"); if(!$result){ echo "Error with MySQL Query: ".mysqli_error(); } ?> 

db.php

  <?php function db_connect() { $result = new mysqli('localhost', 'user', 'password', 'db'); if (!$result) { throw new Exception('Could not connect to database server'); } else { return $result; } } ?> 

Если я изменил строку alter на что-то вроде: $result = $conn->query("SELECT * FROM users refer_id"); По какой-то причине я не получаю ошибки.

Что касается ошибки sql, имеет ли «пользователь» разрешение на изменение таблицы?

Вы смешиваете объектно-ориентированные и процедурные стили mysqli API:

Вы используете объектно-ориентированную:

 $result = new mysqli('localhost', 'user', 'password', 'db'); 

И, следовательно, процедурный:

 echo "Error with MySQL Query: ".mysqli_error(); 

Вы должны использовать либо OO, либо процедурный, но не оба; и если вы выберете процедурный, функции ожидают, что идентификатор ссылки передается как параметр.

Например, mysqli_error следует вызывать либо с использованием объектно-ориентированного API:

 $link = new mysqli(...); echo $link->error; 

Или процедурный API:

 $link = mysqli_connect(...); echo mysqli_error($link); 

(Конечно, это не изменит того факта, что у вас возникла ошибка в вашем SQL-запросе, но она позволит вам получить сообщение об ошибке, которое должно помочь найти причину этой ошибки)

Используйте mysqli_error($result) поскольку mysqli_error ожидает, что соединение будет передано как параметр.