Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 未定义的变量:。。。在…第9行_Php_Mysql - Fatal编程技术网

Php 未定义的变量:。。。在…第9行

Php 未定义的变量:。。。在…第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="

我试图创建一个更新数据库的表单,但它给了我两个错误。你知道那是什么吗? 错误:

注意:未定义变量:第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="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);
?>