为什么我的代码没有将数据插入数据库?

时间:2016-11-06 11:21:41

标签: php mysql database

<?php
 require 'connect.inc.php';

$food= $_POST['food'];
$cost= $_POST['cost'];

$sqlinsert = "INSERT INTO test (eat, pay) VALUES ('$food','$cost')";

?> 

<form method = "POST" action = "index.php">
    Food: <input type = "text" name = "food">
            <br/>
    Cost: <input type = "text" name = "cost">
            <br/>
            <input type = "submit" value = "order">
</form>

为什么我的代码不起作用? index.php很好,它连接得很好,但是当我运行这段代码时,我的数据库中没有显示输出。

1 个答案:

答案 0 :(得分:2)

您似乎是数据库的新手,看到了您的其他问题,这是唯一一个与数据库工作相关的问题。

此行永远不会执行:

$sqlinsert = "INSERT INTO test (eat, pay) VALUES ('$food','$cost')";

我们不知道您使用哪个MySQL API进行连接;如果它是mysql_,或mysqli_或PDO,或其他,因为您未在提问中提及。

根据所使用的API,您需要在PDO中运行mysql_query()mysqli_query()query()/execute()

请参阅以下链接,了解如何执行此操作:

使用您连接的相同API检查错误,并且发现您很可能在同一文件中运行此代码,您需要在POST阵列周围使用条件语句来检查它们是否为空,和/或在提交按钮上使用isset()并为其指定“名称”属性。

即:<input type = "submit" name = "submit" value = "order">

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

否则,你会因为错误而退回。

如果是空参考:

注意:不同的MySQL API不会混用,因此您无法使用mysql_mysqli_query()或PDO进行查询,请记住这一点。

另一件事是确保进入数据库的数据不包含MySQL会抱怨的字符,例如撇号。

因此,您需要转义该数据。这是另一个原因,避免可能的SQL注入;你应该使用准备好的声明。

参考文献:

<强>脚注:

如果您使用mysql_ API进行连接,则该API已弃用,并已在PHP 7.0中删除。如果是这种情况,则需要使用mysqli_或PDO API。