【发布时间】:2017-07-19 22:01:00
【问题描述】:
几天前,我在我的 Raspberry Pi 2 Model B+ 上安装了 MySql,看看我是否可以使用它、PHP、phpmyadmin 和 Apache 来创建一个可访问的数据库来组织和分类家里的书籍。我在 MySQL 数据库中有一个表,该表设置为具有三列的原型;书号(设置为自动递增)、书名和作者姓氏。我正在尝试在数据库 bookProof 中使用表单将书籍插入表 beta 中。 这是表单的代码:
<html>
<body>
<form action="catalog.php" method="POST">
<p>Book Title: <input type="text" name="title"></p>
<p>Author's Last Name: <input type="text name="authorlastname"></p>
</form>
</body>
</html>
其中链接到“catalog.php”,即:
<?php
define('DB_NAME', 'bookProof');
define('DB_USER', 'root');
define('DB_PASSWORD', 'root');
define('DB_HOST', 'localhost');
$conn = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if ($conn->connect_error) {
die("Could not connect: " . $conn->connect_error);
}
$value = $_POST["title"]
$value2 = $_POST["authorlastname"]
$sql = "INSERT INTO beta ('title', 'authorLastName') VALUES ('".$value."', '".$value2."')"
$query = mysqli_query($conn,$sql);
if ($conn->($sql) === TRUE) {
echo "New entry completed successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
打开demoform.php时功能正常,但是点击“添加图书”按钮时,按预期进入catalog.php,但是catalog.php页面是空白的,表格没有变化,谷歌Chrome 的“检查”工具给出了错误:
POST http://192.168.254.11/Library/catalog.php 500 (Internal Server Error) catalog.php:1
如果有人知道如何获取数据库的输入,请告诉我。
注意:这只是一个家庭系统,因此安全不是优先事项(我不需要 SQL 代码注入保护)。
【问题讨论】:
-
这听起来像是 Apache 配置错误,代码 500 是服务器端错误。您在 catalog.php 页面上是否有任何 .htaccess 规则?
-
这一行缺少一个双引号。已更正 ->
-
@mayur beldar 我正在使用 VNC 连接来访问我的 Raspberry Pi,因此我不得不再次输入整个代码,而不是在此处复制/粘贴。代码在实际服务器上是正确的。
-
@elzo Valugi 我在该页面上没有任何 .htaccess 规则。我是否需要为此页面的功能实现这些功能?如果是这样,您能否提供有关如何做到这一点的资源和资源?感谢您的宝贵时间。
-
警告:使用
mysqli时,您应该使用parameterized queries 和bind_param将用户数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了一个严重的SQL injection bug。 切勿将$_POST、$_GET或任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。