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;
       }
    }

    ?>

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

5
задан Mike B 15 February 2010 в 00:02
поделиться

3 ответа

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

4
ответ дан 18 December 2019 в 09:07
поделиться

Вы смешиваете объектно-ориентированный и процедурный стили 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-запросе, но это позволит вам получить сообщение об ошибке, которое должно помочь найти причину этой ошибки)

10
ответ дан 18 December 2019 в 09:07
поделиться

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

4
ответ дан 18 December 2019 в 09:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: