mysqli_error () ожидает ровно 1 параметр, заданный 0 - PullRequest
5 голосов
/ 15 февраля 2010

Я пытаюсь разобраться в 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"); По какой-то причине я не получаю ошибки.

Ответы [ 3 ]

9 голосов
/ 15 февраля 2010

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

4 голосов
/ 15 февраля 2010

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

4 голосов
/ 15 февраля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...