Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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中的db WHERE中选择*后运行函数吗?_Php_Url - Fatal编程技术网

我可以在php中的db WHERE中选择*后运行函数吗?

我可以在php中的db WHERE中选择*后运行函数吗?,php,url,Php,Url,我想在WHERE之后使用函数 像这样就行了 $sql = "SELECT * FROM Prodotti WHERE Id=10"; 如果我想让id出现在URL链接中怎么办? 链接示例如下: 这样就不行了 $sql = "SELECT * FROM Prodotti WHERE strpos($fullUrl, signup=Id)"; 您可以从url获取注册参数,如下所示: $signup = $_GET['signup']; 然后在查询中使用它: $sql = "SELECT * FR

我想在WHERE之后使用函数

像这样就行了

$sql = "SELECT * FROM Prodotti WHERE Id=10";
如果我想让id出现在URL链接中怎么办? 链接示例如下: 这样就不行了

$sql = "SELECT * FROM Prodotti WHERE strpos($fullUrl, signup=Id)";

您可以从url获取注册参数,如下所示:

$signup = $_GET['signup'];
然后在查询中使用它:

$sql = "SELECT * FROM Prodotti WHERE Id = '$signup'";

但是这是不安全的,我建议您也在google上搜索“php mysql准备好的语句”

您可以使用superglobal获得
id

$id = (int) $_GET['signup']; // (int) makes sure it is an integer and no string
现在,为了使其在查询中工作,首先需要确保输入的安全性。 您可以通过使用使输入安全,但由于您需要的是整数而不是字符串,因此最好使用

在您的查询中,您可以

$sql = "SELECT * FROM `Prodotti` WHERE `Id` = $id";
在表名和列名周围使用反勾号以防止mysql保留字错误

准备好的报表示例:

$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
$id = (int) $_GET['signup']; 
if ($stmt = $mysqli->prepare("SELECT * FROM `Prodotti` WHERE `Id` = ?")) {

    /* bind parameters for markers */
    $stmt->bind_param("i", $id);// i for integer s for string

    /* execute query */
    $stmt->execute();

    /* bind result variables */
    $stmt->bind_result($district);

    /* fetch value */
    $stmt->fetch();

    // Do something with the fetched data

    /* close statement */
    $stmt->close();
}

research
$\u-GET
您可以通过$\u-GET['signup']
strpos获得注册。strpos
不是mysql函数,因此它不起作用。@IslamElshobokshy虽然这是有效的,但它对SQL注入是开放的。请不要直接传递该值。使用准备好的语句并验证输入。为什么不建议首选方法而不是显示错误的代码示例呢?虽然此解决方案有效,但SQL注入极易受到攻击。考虑修改这个例子来提供额外的安全性…这是安全的可怕建议,提示出现在函数名
mysqli\u real\u escape\u**string**
@Script47中,也就是说最好使用prepared语句,但为什么您首先会建议使用错误的代码?@Script47对于本例来说可能不正确,但最好知道OP通常可以保护用户输入。了解不同方法的存在也是很好的。了解不同的方法是非常好的,但当它们被不正确地使用时就不行了。此外,对于准备好的语句来说,转义是毫无意义的。