首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在数据库中输入数据

无法在数据库中输入数据
EN

Stack Overflow用户
提问于 2016-10-31 13:06:32
回答 2查看 157关注 0票数 0
代码语言:javascript
复制
   <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
     }
  ?>

当我试图输入值并在此时按submit按钮时,我不会收到任何错误,但是我无法在数据库中输入值。问题是我收到的短信是“无法输入数据:表‘雇员’是只读的” 我已经在wamp服务器中创建了数据库(test_db)和表(employee )。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-31 13:45:15

你的问题解决了。尽管如此,我仍然强烈建议您使用已准备好的语句,否则您的代码将被打开,用于SQL注入和可能出现的引用问题。

你把mysql和mysqli混在一起。别说了。由于您正在使用mysqli,所以要利用准备好的语句和bind_param,否则您将面临Since和可能的引用问题。- @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']; ?>"
  • 使用准备好的陈述

更新代码

代码语言:javascript
复制
<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
EN

Stack Overflow用户

发布于 2016-10-31 13:26:49

我确信您的用户没有被授予向您的表中输入数据的权限--请编辑schema_name,并对您的DB执行查询:

将表schema_name.employee上的所有内容授予根;

您也可以尝试不使用架构:将表employee上的所有内容都授予root;

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40342806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档