【问题标题】:I have tried EVERYTHING.. My form wont post to database.. [closed]我已经尝试了一切..我的表格不会发布到数据库.. [关闭]
【发布时间】:2015-05-21 12:28:16
【问题描述】:

我已经尝试重写代码,我查看了我之前编写的成功编码,但我真的找不到问题..我快疯了。

我正在尝试将一些数据从表单发布到数据库。

据我所知,我设置正确的数据库,但是每次都会导致脚本失败。

数据库图片:http://imgur.com/F93A9ot

(抱歉,这里的语言是丹麦语。)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>


<?php

// defining database information

define("HOSTNAME", "localhost");
define("MYSQLUSER", "admin");
define("MYSQLPASS", "admin");
define("MYSQLDB", "lynx");

// establishing database connection

if(isset($_POST['submit'])){

    $connection = new mysqli(HOSTNAME, MYSQLUSER, MYSQLPASS, MYSQLDB);
    
    
    $name = mysqli_real_escape_string($connection, $_POST['name']);
    $price = mysqli_real_escape_string($connection, $_POST['price']);
    $desc = mysqli_real_escape_string($connection, $_POST['desc']);
    
    $insert = "INSERT into products (id, name, price, desc) VALUES (NULL, '$name', '$price', '$desc')";
    
    if($connection->query($insert)) {
        echo "Succes";
    } else {
        echo "Something went wrong";
    }
    
}

?>

<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
    <input type="text" name="name">
    <input type="text" name="price">
    <input type="text" name="desc">
    <input type="submit" name="submit">
    
</form>

    
</body>
</html>

你能看出我做错了什么吗?

【问题讨论】:

  • 显然,您还没有尝试过一切desc 是 SQL 中的保留字。您应该更改列的名称或将其括在反引号中。
  • 您的查询容易受到 MySQL 注入的攻击。您应该使用准备好的语句。
  • 您还没有尝试过的主要事情是在代码中添加错误检查。 $connection-&gt;query() 很可能会失败。您可以使用 $connection-&gt;error 获取描述性错误。
  • @BenPearlKahan OP 使用的是mysqli,而不是mysql
  • 但我不知道这是一个保留字.. 甚至我的老师也不知道 o.O

标签: php html mysql database


【解决方案1】:
products (id, name, price, desc)

也尝试阅读手册? descreserved word

如果你没有这段无用的代码

else {
        echo "Something went wrong";
     }

曾经

else {
        echo $connection-error;
     }

你自己会发现

【讨论】:

  • 不,我还没有 xD 我在我的大学里接受过 php 的讲座,他找不到编码的问题。我试试吧! XD
  • 哇!!非常感谢先生!我想我得给我的老师上课了。先生,您救了我的命!
  • 当某些事情没有按照您的意愿工作时,首先检查错误消息并且不要有您自己的自定义消息。一旦你知道出了什么问题,你就可以修改它们。显示正确的错误消息可以让您免于头痛,并准确说明问题所在
【解决方案2】:

desc是mysql的反向关键字,你可以使用backtick

$insert = "INSERT into products (`id`, `name`, `price`, `desc`) VALUES (NULL, '$name', '$price', '$desc')";

【讨论】:

    【解决方案3】:

    这是您的字段 'desc' 。 MYSQL 不允许这样做,因为它是保留的。所以请重命名。它会解决你的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-04
      • 1970-01-01
      • 2017-10-21
      • 2013-07-30
      • 1970-01-01
      • 2021-10-10
      相关资源
      最近更新 更多