2

我正在编写一个使用 PDO 访问我的 mysql 服务器的脚本。我的想法是将我感兴趣的类别和子类别发布/获取到脚本中。如果脚本没有收到任何输入,我希望它使用通配符并获取所有类别/子类别。但是,当两个变量都设置为“%”时,我只接收具有 0 的行,而不接收具有 1、2、3.... 等的条目作为 kat_id 和 subkat_id。当我不是 %kat_id 并且 $subkat_id 设置为 '%' 时,有人可以识别我做错了什么以及如何更改我的代码以输出我的所有条目

下面是我的代码,我非常感谢我能得到的所有帮助。

<?PHP 
//header("content-type: application/json"); 
error_reporting(E_ALL);
include("../dbconfig.inc.php"); 
mysql_query('SET CHARACTER SET utf8');

// Ta emot variiabler
if( isset($_GET['kat_id'])) {
$kat_id =  $_GET['kat_id'];
} else { $kat_id =  '%';};

if( isset($_GET['subkat_id'])) {
$subkat_id =  $_GET['subkat_id'];
} else { $subkat_id =  '%';};


$i = 1;


$stmt = $dbh->prepare("SELECT * FROM transaktioner WHERE kat_id = :kategori_id AND subkat_id = :subkategori_id");

// Execute
$stmt->execute( array(

            'kategori_id' => $kat_id,
            'subkategori_id' => $subkat_id,
            )

            );

$result = $stmt->fetchAll();
foreach($result as $row)
{

 $r[$i]= $row;

  $i++;  
}

    var_dump ($r);
    //echo '('. json_encode($r) . ')';  
4

1 回答 1

3

您使用通配符的想法是错误的。无论是在执行上,还是在意图上。SQL 中的通配符不以这种方式使用。

当没有选择类别时,根本不需要在查询中添加过滤器。因此,没有设置过滤器,只需

SELECT * FROM transaktioner

它必须是,没有 WHERE 子句。

只是一个注释

foreach($result as $row)
{

 $r[$i]= $row;

  $i++;  
}

是一段非常有趣的代码。$result 已经包含您的数据,并且在循环中复制它是没有用的。

于 2013-08-16T15:34:04.840 回答