Почему моя вставка не работает в php? - PullRequest
2 голосов
/ 01 июля 2010

У меня есть оператор вставки, который я запрашиваю в БД.

$notes_sql = 'INSERT into notes SET
              order_id = "'.$_GET['order_id'].'",
              date_added = "'.$date_added.'",
              note_message = "'.$_SESSION['note_message'].'"';

$notes_result = $conn->query($notes_sql) or die(mysqli_error($conn));

Я знаю, что оператор sql правильный, потому что когда я пытаюсь вывести его и запустить этот оператор echo'd в phpMyadmin,он вставляет его нормально.

Когда я пытаюсь запустить оператор вставки, я получаю следующую ошибку:

Команда INSERT запрещена пользователю 'ideapale_amquery' @ 'localhost' для таблицы 'Примечания '

Строка 74 - это строка кода, которая запрашивает оператор.

Я также знаю, что правильно подключаюсь к БД через включенный файл connection.php, посколькуЯ использую переменные из этого включенного файла на странице, над которой я работаю.

Я предполагаю, что я как-то неправильно подключаюсь к БД, но я не уверен, что это такое.Я скопировал код для этой страницы с другой страницы, которая работает нормально, поэтому я не понимаю, почему она не работает.

Почему моя вставка не работает в php?

***** ОБНОВЛЕНИЕ *****

Это мой сценарий подключения:

function dbConnect($type) {
    if($type == 'query'){
        $user = 'ideapale_amquery';
        $pwd = 'xxxxxxxxxxx';
    } else if($type == 'admin') {
        $user = 'ideapale_amadmin';
        $pwd = 'xxxxxxxxxxxx';
    } else {
        exit('Unrecognized connection type');   
    }

$conn = new mysqli('localhost', $user, $pwd, 'ideapale_offorders') or die('Cannot open database');
return $conn;
}

Вот как я подключаюсь к сценарию подключения со страницы, на которой я нахожусь:

$conn = dbConnect('admin');

Я подключаюсь к БД с правами администратора, поэтому не понимаю, почему он думает, что я хочу использовать имя пользователя 'amquery'.

Ответы [ 3 ]

2 голосов
/ 01 июля 2010

Вы утверждаете, что подключаетесь к пользователю ideapale_amadmin, но сообщение об ошибке INSERT command denied to user 'ideapale_amquery'@'localhost' for table 'notes' ясно показывает, что это не так.Вы используете неправильный объект MySQLi (то есть соединение, которое вы создали ранее в скрипте) или передаете неправильный параметр dbConnect().

1 голос
/ 01 июля 2010

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

Изменить: die(mysqli_error())
На: die(mysqli_error($conn))

1 голос
/ 01 июля 2010

Попробуйте

$notes_result = $conn->query($notes_sql) or die(mysqli_error($conn)); 

Чтобы получить обновленную ошибку.

Если отраженный SQL работает нормально, вы должны догадаться, что это проблема с подключением или разрешениями. Вы делаете вставку где-нибудь еще?

Редактировать: Так что это проблема с разрешениями, запустите это:

GRANT INSERT PRIVILEGES ON *.* TO 'ideapale_amquery'@'localhost' 

Однако, если вы не верите в это, попробуйте сначала:

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