我可以在PHP中的SELECT * FROM db WHERE之后运行函数吗?

时间:2018-06-18 14:36:48

标签: php url

我想在WHERE

之后使用一个函数 像这样工作

$sql = "SELECT * FROM Prodotti WHERE Id=10";

如果我希望id在URL链接中怎么办? 链接示例如下:https://www.try.org/product.php?signup=98 这种方式不起作用

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

2 个答案:

答案 0 :(得分:0)

您可以使用$_GET superglobal:

获取id
$id = (int) $_GET['signup']; // (int) makes sure it is an integer and no string

现在,为了使其在您的查询中工作,您首先需要确保输入安全。 您可以使用mysqli_real_escape_string使输入安全,但由于您需要整数而不是字符串,因此最好使用prepared statement

在您的查询中,您可以做到

$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();
}

答案 1 :(得分:-3)

你可以从网址获取signup参数:

$signup = $_GET['signup'];

然后在您的查询中使用它:

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

但这不安全,我建议你也谷歌为“php mysql准备好的陈述”