Не удалось ввести данные в базу данных.

   <html>

<head>
<title>Add New Record in MySQL Database</title>
</head>

<body>
<?php
if(isset($_POST['add'])) {
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'password';
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);

if(! $conn ) {
die('Could not connect: ' . mysql_error());
}

if(! get_magic_quotes_gpc() ) {
$emp_name = addslashes ($_POST['emp_name']);
$emp_address = addslashes ($_POST['emp_address']);
}else {
$emp_name = $_POST['emp_name'];
$emp_address = $_POST['emp_address'];
}

$emp_salary = $_POST['emp_salary'];

$sql = "insert into employee(emp_name,emp_address, emp_salary)values('$emp_name','$emp_address','$emp_salary')";

mysqli_select_db($conn,"test_db");
$retval = mysqli_query($conn,$sql);

if(!$retval) {
die('Could not enter data: ' . mysql_error());
}

echo "Entered data successfully\n";

mysql_close($conn);
}else {
?>

<form method = "post" action = "<?php $_PHP_SELF ?>">
<table width = "400" border = "0" cellspacing = "1"cellpadding = "2">

<tr>
<td width = "100">Employee Name</td>
<td><input name = "emp_name" type = "text"id = "emp_name"></td>
</tr>

<tr>
<td width = "100">Employee Address</td>
<td><input name = "emp_address" type = "text"id = "emp_address"></td>
</tr>

<tr>
<td width = "100">Employee Salary</td>
<td><input name = "emp_salary" type = "text"id = "emp_salary"></td>
</tr>

<tr>
<td width = "100"> </td>
<td> </td>
</tr>

<tr>
<td width = "100"> </td>
<td>
<input name = "add" type = "submit" id = "add"value = "Add Employee">
</td>
</tr>

</table>
</form>

<?php
}
?>

когда я пытаюсь ввести значение и нажимаю кнопку отправки, я не получаю никакой ошибки, но не могу ввести значение в базу данных.
Проблема в том, что я получаю текст «Не удалось ввести данные: таблица« работник »только для чтения». Может кто-нибудь помочь мне разобраться с этой проблемой?

Я создал базу данных (test_db) и таблицу (сотрудник) на сервере Wamp.

0

Решение

Ваша проблема решена. Несмотря на то, что я настоятельно рекомендую вам использовать подготовленные операторы, в противном случае ваш код открыт для внедрения SQL-кода и возможных проблем с цитированием.

Вы смешиваете MySQL и MySQL. Останови это. Так как вы используете MySQL,
воспользоваться подготовленными утверждениями и bind_param, иначе вы
открыт для SQL-инъекций и возможных проблем с цитированием. — @aynber

изменения

  • + Изменить die('Could not connect: ' . mysql_error()); к die('Could not connect: ' . mysqli_connect_error());
  • + Изменить mysql_close($conn); к mysqli_close($conn);
  • + Изменить action = "<?php $_PHP_SELF ?>" к action = "<?php echo $_SERVER['PHP_SELF']; ?>"
  • использование Подготовленные заявления.

Обновленный код

<html>

<head>
<title>Add New Record in MySQL Database</title>
</head>

<body>
<?php
if(isset($_POST['add'])) {
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'password';
$db = "test_db";

$conn = mysqli_connect($dbhost, $dbuser, $dbpass, $db);

if(! $conn ) {
die('Could not connect: ' . mysqli_connect_error());
}

$stmt = mysqli_prepare($conn, "INSERT INTO employee(emp_name,emp_address, emp_salary) VALUES (?, ?, ?)");
mysqli_stmt_bind_param($stmt, 'sss', $_POST['emp_name'], $_POST['emp_address'], $_POST['emp_salary']);

if(!mysqli_stmt_execute($stmt)) {
die('Could not enter data: ' . mysqli_error($conn));
}

echo "Entered data successfully\n";

mysqli_close($conn);
} else {
?>
<form method = "post" action = "<?php echo $_SERVER['PHP_SELF']; ?>">
<table width = "400" border = "0" cellspacing = "1"  cellpadding = "2">
<tr>
<td width = "100">Employee Name</td>
<td><input name = "emp_name" type = "text" id = "emp_name"></td>
</tr>
<tr>
<td width = "100">Employee Address</td>
<td><input name = "emp_address" type = "text" id = "emp_address"></td>
</tr>
<tr>
<td width = "100">Employee Salary</td>
<td><input name = "emp_salary" type = "text" id = "emp_salary"></td>
</tr>
<tr>
<td width = "100"> </td>
<td> </td>
</tr>
<tr>
<td width = "100"> </td>
<td><input name = "add" type = "submit" id = "add" value = "Add Employee"></td>
</tr>
</table>
</form>

<?php
}
?>

Беглый взгляд

1

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

Я уверен, что ваш пользователь не имеет права вводить данные в вашу таблицу
Пожалуйста, отредактируйте имя_схемы и выполните запрос к вашей БД:

ПРЕДОСТАВЛЯЙТЕ ВСЕ В ТАБЛИЦЕ schema_name.employee TO root;

Также вы можете попробовать без схемы:
ПРЕДОСТАВЛЯЙТЕ ВСЕ НА СТОЛБЕ сотрудника, чтобы получить root права

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector