我正在通过PhpMyAdmin在我的apacheserver上的localhost上工作一下,我正在尝试获取用户输入的信息放在我的数据库中并在页面上回显它。
我收到这些错误:
注意:未定义的索引:第63行的/Applications/XAMPP/xamppfiles/htdocs/index.php中的namn
注意:未定义的索引:第71行的/Applications/XAMPP/xamppfiles/htdocs/index.php中的namn
注意:未定义的索引:第71行的/Applications/XAMPP/xamppfiles/htdocs/index.php中的年龄
错误:'字段列表'中的未知列'namn'
我有一个名为MyCategory的图表,我有一个“名字”和“年龄”字段。 这就是代码的样子:
<form id = "Personinfo" Method = "Get" action = "index.php" >
<input type = "text" id = "namn" name = "namn" placeholder = "namn"/>
<input type = "text" id = "age" name = "age" placeholder = "age"/>
<input type = "submit"/>
</form>
<form action= "index.php method="$_GET">
<?php $mysql_pekare=mysqli_connect("localhost", "username","password","myDatabase");
$query = "INSERT INTO MyCategory(namn, age)
VALUES('$_GET[namn]', '$_GET[age]')";
if (!mysqli_query($mysql_pekare,$query))
{
die('Error: ' . mysqli_error($mysql_pekare));
}
echo "Welcome ". $_GET["namn"];
答案 0 :(得分:2)
这里有几个问题,让我们按照有意义的顺序覆盖它们。
首先,当您加载页面并运行代码时,没有设置GET数组,因此您将获得已显示的所有错误。通过检查GET数组是否为空来覆盖它:
if(!empty($_GET))...
其次,您尝试将数据添加到不存在的列中。确保在查询中正确命名列:
$query = "INSERT INTO MyCategory(`name`, `age`) VALUES('$_GET[namn]', '$_GET[age]')";
注意:我在这里使用了返回标记,因为&#34; name&#34;是一个MySQL关键字。虽然在这种情况下不需要,但我更喜欢&#34;更安全而不是抱歉&#34;做事方法。
提供这两项,您可以改变您的代码和标记:
<?php
$mysql_pekare=mysqli_connect("localhost", "username","password","myDatabase") or die(mysqli_error($mysql_pekare));
if(!empty($_GET)) {
$query = "INSERT INTO MyCategory(`name`, `age`) VALUES('$_GET[namn]', '$_GET[age]')";
if (!mysqli_query($mysql_pekare,$query)) {
die('Error: ' . mysqli_error($mysql_pekare));
}
echo "Welcome ". $_GET["namn"];
}
?>
<form id="Personinfo" action="index.php" > <!-- default form method is GET -->
<input type="text" id="namn" name="namn" placeholder="namn"/>
<input type="text" id="age" name="age" placeholder="age"/>
<input type="submit"/>
</form>
其他信息:
Your script is at risk for SQL Injection Attacks.了解prepared的MySQLi语句。