无法获取 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
}
?>