无法获取 PHP 中的 url 参数
Can not get the url parameter in PHP
我试图在 SQL 中获取 URL 参数,但没有任何反应。
这是我的 URL:
http://localhost/webshop/imagegallery.php?categori=necklace
这是我的 SQL 查询:
$sql = 'SELECT count(productid) FROM products where productcategori=".$_GET["categori"]"';
我做错了什么?
也看看这个查询:
$sql = 'select * from products join ids on products.productid=ids.productid join photos on photos.photosid=ids.photoid where products.productcategori='".$_GET["kategori"]."' && ids.photonumber=1 ORDER BY products.productid DESC $limit';
首先,您的引号似乎是问题所在。尝试将您的查询行更改为:
$sql = "SELECT count(productid) FROM products where productcategori='".$_GET["categori"]."'";
此外,您应该永远不要 将变量插入到 SQL 查询中,就像这样。绝不。
原因是像这样,您的系统很容易受到 SQL 注入。
改为考虑使用 PDO。 This SO question 有一个关于如何正确执行的很好的答案。
使用该答案,这是关于问题最后一部分的一些示例代码。请注意,我用 PDO 占位符替换了查询字符串中的所有变量。
<?php
$pdo = new PDO('mysql:dbname=mydatabase;host=127.0.0.1;charset=utf8', 'username', 'password');
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM products JOIN ids ON products.productid=ids.productid JOIN photos ON photos.photosid=ids.photoid WHERE products.productcategori=:categori && ids.photonumber=1 ORDER BY products.productid DESC LIMIT :limit_min , :limit_max";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':categori', $_GET['categori']);
$stmt->bindParam(':limit_min', ($pagenum - 1) * $page_rows, PDO::PARAM_INT);
$stmt->bindParam(':limit_max', $page_rows, PDO::PARAM_INT);
$stmt->execute();
foreach($stmt as $row) {
// do something with $row
}
?>
我试图在 SQL 中获取 URL 参数,但没有任何反应。
这是我的 URL:
http://localhost/webshop/imagegallery.php?categori=necklace
这是我的 SQL 查询:
$sql = 'SELECT count(productid) FROM products where productcategori=".$_GET["categori"]"';
我做错了什么?
也看看这个查询:
$sql = 'select * from products join ids on products.productid=ids.productid join photos on photos.photosid=ids.photoid where products.productcategori='".$_GET["kategori"]."' && ids.photonumber=1 ORDER BY products.productid DESC $limit';
首先,您的引号似乎是问题所在。尝试将您的查询行更改为:
$sql = "SELECT count(productid) FROM products where productcategori='".$_GET["categori"]."'";
此外,您应该永远不要 将变量插入到 SQL 查询中,就像这样。绝不。 原因是像这样,您的系统很容易受到 SQL 注入。
改为考虑使用 PDO。 This SO question 有一个关于如何正确执行的很好的答案。
使用该答案,这是关于问题最后一部分的一些示例代码。请注意,我用 PDO 占位符替换了查询字符串中的所有变量。
<?php
$pdo = new PDO('mysql:dbname=mydatabase;host=127.0.0.1;charset=utf8', 'username', 'password');
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM products JOIN ids ON products.productid=ids.productid JOIN photos ON photos.photosid=ids.photoid WHERE products.productcategori=:categori && ids.photonumber=1 ORDER BY products.productid DESC LIMIT :limit_min , :limit_max";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':categori', $_GET['categori']);
$stmt->bindParam(':limit_min', ($pagenum - 1) * $page_rows, PDO::PARAM_INT);
$stmt->bindParam(':limit_max', $page_rows, PDO::PARAM_INT);
$stmt->execute();
foreach($stmt as $row) {
// do something with $row
}
?>