Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.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 如何解决这个问题,尝试使用$GET data调用数据库条目?_Php_Mysql_Get - Fatal编程技术网

Php 如何解决这个问题,尝试使用$GET data调用数据库条目?

Php 如何解决这个问题,尝试使用$GET data调用数据库条目?,php,mysql,get,Php,Mysql,Get,我试图通过链接发送数据,例如使用链接中的…?id=3。然后我在php中使用GET来检索它。但当我尝试将其放入查询时,它不起作用 $select= mysql_query("SELECT * FROM products WHERE id= $_GET['id'] "); 必须确保变量为整数,否则容易受到SQL注入攻击 $id = (int) $_GET['id']; $select= mysql_query("SELECT * FROM products WHERE id= $id"); PH

我试图通过链接发送数据,例如使用链接中的…?id=3。然后我在php中使用GET来检索它。但当我尝试将其放入查询时,它不起作用

$select= mysql_query("SELECT * FROM products WHERE id= $_GET['id'] ");

必须确保变量为整数,否则容易受到SQL注入攻击

$id = (int) $_GET['id'];
$select= mysql_query("SELECT * FROM products WHERE id= $id");
PHP确实允许在带引号的字符串中使用简单的变量引用,但不允许像您这样使用数组引用。通过将表达式用大括号括起来,如@user3624411 suggest,可以进行复变量插值。。。但是请不要这样做。这仍然容易受到SQL注入的攻击,您不能这样做。如果你是一名电工,安装不安全的电线会导致火灾

理想情况下,您可以切换到PDO并使用查询参数,我鼓励您在第一次机会了解这一点。但我知道您有时间限制,重写所有数据库代码是不现实的

试试这个:

$id = $_GET['id'];
$select= mysql_query("SELECT * FROM products WHERE id= '$id' ");
或者您可以使用
$select=mysql\u查询(“select*FROM products WHERE id=“.$\u GET['id']”)


但我建议您不要使用GET方法和MYSQL:使用POST和MYSQLI或PDO。

使用MYSQLI或PDO。那你就安全多了。我假设DB的连接正常,一切正常。什么不起作用?你犯了什么错误?如果你使用正则变量,它能正常工作吗?@WizKid谢谢你的建议,但是我有时间限制,我没有时间来学习。你知道我在mysql中的错误或正确方法是什么吗。@Patrick yea如果我输入一个数字,它将以fineWrap“…
{$\u GET['id']}…”
加引号-记住这会增加SQL注入漏洞。无论是GET还是POST,这仍然容易受到SQL注入的攻击。是的,仅仅因为变量不是从URL获取的
$\u,用户仍然可以将数据插入
$\u POST
变量。MySQLi和PDO准备的语句将在大多数情况下保护您免受SQL注入的影响,POST不会。感谢您的帮助,通过此链接,我将使用一个指向窗帘产品的链接,该产品用于电子商务网站。这样我就可以在php页面上打开所选产品。您认为您的方法足够安全。是的,它强制
$id
为整数,从而防止任何恶意内容潜入SQL。您确实需要了解SQL注入如何工作以及如何保护自己。我推荐(我的演讲)。