【问题标题】:form submitted data is not saved into phpmyadmin表单提交的数据未保存到 phpmyadmin
【发布时间】:2016-08-16 21:49:58
【问题描述】:

我在 apache 服务器上的 localhost 中使用以下 php 代码,它没有显示任何错误,当我以 html 表单提交数据但数据未保存在 phpmyadmin 表中时,一切似乎都很好。有人可以帮忙吗?

<?php
$servername = 'localhost';
$username = 'root';
$password = 'xxxx';
$database = 'newtable';
$con = mysqli_connect("$servername","$username","$password","$database");
if (! $con){
    die('Could not connect: ' . mysqli_error());
}
$sql = "INSERT INTO newtable (firstname, lastname) VALUES  ('$_POST[firstname]', '$_POST[lastname]')";
if (! $sql)
{
    die('Error: ' . mysqli_error());
}
echo "Record Added Successfully!";
mysqli_close($con);
?>

和html代码是:

<html>
<body>
    <form action="insert.php" method="post">
        Firstname: <input type="text" name="firstname" /><br><br>
        Lastname: <input type="text" name="lastname" /><br><br>
        <input type="submit" />
    </form>
</body>
</html>

【问题讨论】:

  • 请回答下面给出的答案。

标签: php mysqli phpmyadmin


【解决方案1】:

您忘记执行查询,请使用如下准备好的语句

$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];

$sql = "INSERT INTO newtable (firstname, lastname) VALUES  (?, ?)";
$stmt = $con->prepare($sql);

$stmt->bind_param("ss", $firstname, $lastname);
$stmt->execute();

【讨论】:

  • 以更安全的形式更正!!
【解决方案2】:

您没有在任何地方执行插入查询语句,因此没有添加数据。

替换下面的行:

if (! $sql)
{
die('Error: ' . mysqli_error());
}

if ($mysqli->query($con, $sql) !== TRUE)
{
die('Error: ' . mysqli_error($con));
}

【讨论】:

    【解决方案3】:

    你只是写你的查询忘记执行它

    $sql = "INSERT INTO newtable (firstname, lastname) VALUES  ('".$_POST['firstname']."', '".$_POST['lastname']."')";
    $result=mysqli_query($con,$sql);// execute it
    
    if (! $result)
    {
    die('Error: ' . mysqli_error($con));// need to pass connection as parameter
    }
    

    阅读

    http://php.net/manual/en/mysqli.error.php

    http://php.net/manual/en/mysqli.query.php

    最好使用bind语句来防止表单sql注入

    $sql = "INSERT INTO newtable (firstname, lastname) VALUES  (?, ?)";
    $stmt = $con->prepare($sql);
    
    $stmt->bind_param("ss", $firstname, $lastname);
    $stmt->execute();
    

    【讨论】:

    • 打字速度比我今天还快,玩的不错!
    【解决方案4】:

    谢谢大家的回答,成功了

    我只需要添加 $result=mysqli_query($con,$sql);

    是程序的执行吗?

    【讨论】:

      【解决方案5】:
      <?php 
      $servername = 'localhost';
      $username = 'root'; 
      $password = ''; 
      $database = 'newtable'; $con = mysqli_connect("$servername","$username","$password","$database");
      if (! $con){ die('Could not connect: ' . mysqli_error()); } 
      $sql = "INSERT INTO yourTableName (firstname, lastname) VALUES ('".$_POST['firstname']."', '".$_POST['lastname']."')"; 
      if (! $sql) { die('Error: ' . mysqli_error()); } echo "Record Added Successfully!"; mysqli_close($con); 
      ?>
      

      如果您使用的是本地主机,则数据库密码默认为空,您需要在插入查询中提供您的表名。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-09
        • 1970-01-01
        • 1970-01-01
        • 2014-11-30
        • 1970-01-01
        • 2013-06-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多