Php 未定义的变量:。。。在…第9行
我试图创建一个更新数据库的表单,但它给了我两个错误。你知道那是什么吗? 错误: 注意:未定义变量:第9行的Points inD:\2013.1\xampp\htdocs\ranklist\u get.php 注意:未定义的变量:第9行D:\2013.1\xampp\htdocs\ranklist\u get.php中的Skype welcome.htmlPhp 未定义的变量:。。。在…第9行,php,mysql,Php,Mysql,我试图创建一个更新数据库的表单,但它给了我两个错误。你知道那是什么吗? 错误: 注意:未定义变量:第9行的Points inD:\2013.1\xampp\htdocs\ranklist\u get.php 注意:未定义的变量:第9行D:\2013.1\xampp\htdocs\ranklist\u get.php中的Skype welcome.html <body> <form action="ranklist_get.php" method="
<body>
<form action="ranklist_get.php" method="get">
Skype: <input type="text" id="Skype"><br>
Points: <input type="number" id="Points"><br>
<input type="submit">
</form>
</body>
</html>
Skype:
要点:
ranklist_get.php
<?php
$con=mysqli_connect("localhost","root","","my_db");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_query($con,"UPDATE Persons SET Points='".$Points."' WHERE Skype='".$Skype."'");
mysqli_close($con);
?>
在查询中使用变量之前,先用期望值初始化变量
$Points=mysqli_real_escape_string($con,$_GET["Points"]);
$Skype=mysqli_real_escape_string($con,$_GET["Skype"]);
还要确保将name
属性添加到表单字段中name=“Points”
和name=“Skype”
,否则它将无法工作。GET
变量存储在全局$\u GET
数组中(就像POST
和COOKIE
一样)。您可以直接在代码中使用它们,如so$\u GET[“Points”]
或将它们存储在变量中
请注意,您应该在每个输入上使用name
属性来指定它在数组中的键
在代码的顶部放上:
$Points = $_GET["Points"];
$Skype = $_GET["Skype"];
您的表格应改写如下:
<form action="ranklist_get.php" method="get">
Skype: <input type="text" id="Skype" name="Skype"><br>
Points: <input type="number" id="Points" name="Points"><br>
<input type="submit">
</form>
您可以在此处阅读有关准备语句的更多信息:将HTML制作为
<html>
<body>
<form action="ranklist_get.php" method="get">
Skype: <input type="text" id="Skype" name="Skype"><br>
Points: <input type="number" id="Points" name="Points"><br>
<input type="submit" name="Submit" value="Submit">
</form>
</body>
</html>
Skype:
要点:
ranklist_get.php
<?php
$con=mysqli_connect("localhost","root","","my_db");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
if($_REQUEST['Submit']=='Submit'){
$Points=$_REQUEST['Points'];
$Skype=$_REQUEST['Skype'];
mysqli_query($con,"UPDATE Persons SET Points='".$Points."' WHERE Skype='".$Skype."'");
}
mysqli_close($con);
?>
这不是很容易吗?您确实没有在任何地方声明这些变量,您正在查询中使用它们。我没有看到在您的代码中为$Points
或$Skype
分配任何值。这几乎是该查询的0准备。用线做准备是没有用的웃除了防止SQL注入之外,其他方面都很糟糕。他们希望如何将参数绑定到OP,这取决于OP。这纯粹是一个例子,从来没有。这将永远无法防止任何形式的SQL注入。您必须使用占位符准备查询,然后将值绑定到占位符,而不是使用字符串插值准备查询。这不是准备查询的正确方法。请参阅您链接的此页面,它必须是以下格式:从城市中选择名称为?“
的地区,然后您将一个值绑定到它。@Hanky웃Panky我不知道它不会对直接输入进行消毒…已经更新。现在它完美且安全,+1
<?php
$con=mysqli_connect("localhost","root","","my_db");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
if($_REQUEST['Submit']=='Submit'){
$Points=$_REQUEST['Points'];
$Skype=$_REQUEST['Skype'];
mysqli_query($con,"UPDATE Persons SET Points='".$Points."' WHERE Skype='".$Skype."'");
}
mysqli_close($con);
?>