【问题标题】:insert record using mysqli with one page使用 mysqli 一页插入记录
【发布时间】:2018-05-04 16:24:22
【问题描述】:

我想知道这段代码有什么问题? 我想要发生的是在单击提交按钮时插入记录。但似乎我的 isset 函数有问题。

 Database Name: dbase

 Table Name: tblmessage

 Fields:
 message_id - INT - auto increment
 message - TEXT

更新: 我仍然无法在我的数据库中添加/插入记录。

提前谢谢你!

<html>
<head></head>
<body>
<form method = "post" action = "<?php echo $_SERVER['PHP_SELF']; ?>">
    Message: <input type = "text" name = "message">
    </br></br>
    <input type = "submit" name = "submit">
</form>

<?php
    if (isset($_POST['submit'])) {
       if (!empty($_POST['message'])) {

        $conn = mysqli_connect("localhost", "root", "","dbase");

        $message = $_POST['message'];

        $sql = ""INSERT INTO tblmessage (message_id, message) VALUES (NULL, '$message')";
        $insert = mysqli_query($conn,$sql);

          if ($insert) {
              echo "Message successfully added!";
          }
          else {
            echo "Error" . mysqli_error($conn);
          }
      }
    }
    mysqli_close($conn);
?>
</body>
</html>

【问题讨论】:

  • 哇,这真的很冒险。您直接向数据库查询输入字段的内容。这尖叫着 SQL 注入。您的消息输入的内容到底是什么?像INSERT INTO... 这样的真实查询,或者只是一个文本,您想将其保存在您的数据库中吗?
  • @wayneOS 我已经添加了 sql - insert.. 但仍然无法正常工作:(
  • 如果您需要帮助,请准确描述您的问题。 “不工作”是不够的。
  • @wayneOS 是对的。您想在查询输入之前使用准备好的语句和参数化查询之类的东西来避免 mysql 注入。至于当前的问题,'message'是你的表名吗?您收到什么错误消息?
  • 要检查您收到的错误,请执行以下操作&lt;?php // From http://ca2.php.net/manual/en/function.mysql-query.php $sql = "INSERT INTO (message) VALUES ('$message')"; if (!$sql) { trigger_error('Invalid query: ' . mysql_error()); }

标签: php mysql html mysqli phpmyadmin


【解决方案1】:

工作代码只需复制粘贴即可

<html>
<head></head>
<body>
<form method = "post" action = "<?php echo $_SERVER['PHP_SELF']; ?>">
    Message: <input type = "text" name = "message">
    </br></br>
    <input type = "submit" name = "submit">
</form>

<?php
if (isset($_POST['submit'])) {
    if (!empty($_POST['message'])) {
        $conn = mysqli_connect("localhost", "root", "", "dbase");
        $message = $_POST['message'];

        $sql = "INSERT INTO tblmessage (message_id, message) VALUES (NULL, '" . $message . "')";
        $insert = mysqli_query($conn, $sql);
        mysqli_close($conn);
        if ($insert) {
            echo "Message successfully added!";
        } else {
            echo "Error" . mysqli_error($conn);
        }
    }
}
?>
</body>
</html>

【讨论】:

  • 我已经做了你的建议/意见,但我仍然无法添加/插入记录。
  • 我没有看到任何错误输出...当我点击提交按钮并检查 phymyadmin 是否成功时,我无法添加记录,但不幸的是它没有添加。
  • 谢谢!问题解决了! :)
  • @PavanSikarwar 为什么你试图将我的答案编辑成错误的答案?
【解决方案2】:

你正试图内爆一个字符串。阅读implode

变化:

  $sql = "INSERT INTO tblmessage (message) VALUES (NULL, ".implode(',',$message).")";
  $insert = mysqli_query($conn,$sql);

收件人:

  $sql = "INSERT INTO tblmessage (message_id, message) VALUES (NULL, '$message')";
  $insert = mysqli_query($conn,$sql);

【讨论】:

  • 我刚刚做了 Pavan Sikarwar 的建议,我会做你的建议。
【解决方案3】:

您的代码中没有任何 SQL-Statement。 如果要从表单中插入消息,则需要更改 $sql

$sql = INSERT into dbase(your_database_field) Values ($message);
$sql-statement=mysqli_query($conn, $sql);

您应该在将数据发送到数据库之前清理您的输入。

【讨论】:

  • 我已经添加了:$sql = "INSERT INTO (message) VALUES ('$message')"; $insert = mysqli_query($conn,$sql);但仍然无法正常工作:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-04
  • 1970-01-01
  • 2012-03-18
  • 2016-11-23
  • 1970-01-01
相关资源
最近更新 更多