Права ВСТАВИТЬ PHPmyadmin MySQL

Я настроил базовую таблицу и соединил файл PHP с базой данных. Я могу получить данные из базы данных с помощью SELECT, Тем не менее, когда я пытаюсь использовать UPDATE или же INSERT INTOЯ получаю сообщение:

Msgstr «Команда INSERT запрещена пользователю » @ ‘localhost’ для таблицы ‘table_data'».

Когда я пытаюсь использовать запрос в PMA, я могу вставить данные. Но когда я хочу изменить права пользователя, он говорит, что у меня нет прав на это. Но когда я использую SQL SHOW GRANTS, я получаю:

«Гранты для [email protected].% GRANT USAGE ON . TO ‘xxxl’@’10.0.%’
УКАЗАН ПАРОЛЕМ, ПРЕДОСТАВЛЯЮЩИМ ВСЕ ПРИВИЛЕГИИ НА
‘database_name’. * TO ‘xxx’@’10.0.%’ с опцией GRANT.

Я использую единственную учетную запись MySQL, предоставленную моим хостом, поэтому я предполагаю, что это пользователь root.

$servername = "mysql.domain_name.nl";
$username = 'xxx';
$password = 'xxx';

$conn = new mysqli($servername, $username, $password);`

$username = $_POST['username'];
$password =  $_POST['password'];
$query = "INSERT INTO 'game'.'login_data' ('username', 'password') VALUES ('".$username."', '".$password."')";
$data = mysql_query ($query)or die(mysql_error());

Пожалуйста, помогите мне получить права, чтобы иметь возможность INSERT,

-3

Решение

Сначала вам нужно прочитать об использовании mysqli. Все, что вам нужно, здесь: http://php.net/manual/en/book.mysqli.php

Вы увидите, что вам не хватает 1 параметра из вашего $conn
Должно быть new mysqli('localhost', 'my_user', 'my_password', 'my_db');

$servername = "mysql.domain_name.nl";
$username = 'xxx';
$password = 'xxx';

$conn = new mysqli($servername, $username, $password, **add database**);

$username = $_POST['username'];
$password =  $_POST['password'];

В целях безопасности вы хотите использовать подготовленные заявления.
Измените это на следующее:

if ($stmt = $conn->prepare("INSERT INTO `game`.`login_data` (username, password) VALUES (?, ?)")) {
$stmt->bind_param('ss', $username , $password );
// Execute the prepared query.
if (! $stmt->execute()) {
$stmt->close();
}
}
}

Конечно, это не тот способ, которым вы должны полностью относиться к пользовательской базе данных. Вы хотите хешировать пароли, хранить соли и т. Д. Но для этого вопроса. Выше должно быть достаточно.

1

Другие решения

Я привел в порядок ваш код, исправил синтаксические ошибки, а также переключил весь код на PDO.

MySQL устарела и MySQLi открыта для взлома SQL-инъекций, даже если mysqli_real_escape_string!

<?php
$user = 'xxx';
$pass = 'xxx';

$conn = new PDO('mysql:host=localhost;dbname=mysql.domain_name.nl', $user, $pass);

$username = $_POST['username'];
$password =  $_POST['password'];
$stmt = $conn->prepare("INSERT INTO `game`.`login_data` ('username', 'password') VALUES (:username, :password)");
$stmt->bindParam(':username', $username);
$stmt->bindParam(':password', $password);
$stmt->execute();
?>

Для получения дополнительной информации о PDO, обратитесь к руководству здесь: http://php.net/manual/en/book.pdo.php

0

По вопросам рекламы [email protected]