为什么我的代码不能将数据插入数据库?
问题描述:
<?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是好的,它连接好,但没有输出显示在我的数据库中时,我运行此代码。为什么我的代码不能将数据插入数据库?
答
你似乎是数据库的新手,看到你的其他问题,这是唯一与数据库工作有关的问题。
这行永远不会被执行:
$sqlinsert = "INSERT INTO test (eat, pay) VALUES ('$food','$cost')";
我们不知道你正在使用与连接的MySQL的API;如果它是mysql_
或mysqli_
或PDO或其他,因为你没有在你的问题中提及。
根据使用的API,您需要在PDO中运行mysql_query()
或mysqli_query()
或query()/execute()
。
请教关于如何做到这一点下面的链接:
- http://php.net/manual/en/function.mysql-query.php
- http://php.net/manual/en/mysqli.query.php
- http://php.net/manual/en/pdo.query.php/http://php.net/manual/en/pdostatement.execute.php
检查也使用您连接相同的API错误,看到你很可能在同一个文件中运行这些代码,你需要使用条件语句aroun d你的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。
你在哪里运行查询? – Federkun
由于将查询文本分配给变量并不意味着该查询将被执行。 –
执行mysqli_query() –