Я пытаюсь получить голову вокруг 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;
}
}
?>
Если я меняю изменить струну к чему-то как: $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();
Вы должны использовать либо объектно-ориентированный подход, либо процедурный - но не то и другое одновременно; и если вы выберете процедурный, функции ожидают идентификатор ссылки, переданный в качестве параметра.
Например, mysqli_error
следует вызывать либо с использованием объектно-ориентированного API:
$link = new mysqli(...);
echo $link->error;
, либо процедурного API:
$link = mysqli_connect(...);
echo mysqli_error($link);
(Конечно, это не изменит того факта, что у вас есть ошибка в вашем SQL-запросе, но это позволит вам получить сообщение об ошибке, которое должно помочь найти причину этой ошибки)
Используйте mysqli_error ($ result)
, поскольку mysqli_error ожидает, что соединение будет передано в качестве параметра.