我想在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)";
答案 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准备好的陈述”