2016-10-31 8 views
0
<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.

+1

'' ???? Вы определили его где-нибудь?если да, то вы забыли добавить эхо здесь – devpro

+0

Я пытаюсь добавить значения из формы. –

+1

Вы пытались выполнить эхо-запрос, например 'echo $ sql;'? –

ответ

1

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

Вы смешиваете mysql и mysqli. Прекрати это. Поскольку вы используете mysqli, используют подготовленные операторы и 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']; ?>"
  • Использовать Prepared Statements.

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

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

Quick Look

1

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

GRANT ALL ON TABLE schema_name.employee к корневым;

Также вы можете попробовать без схемы: GRANT ALL ON TABLE employee To root;

Смежные вопросы