【发布时间】:2013-08-16 15:28:23
【问题描述】:
我正在编写一个使用 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) . ')';
【问题讨论】:
-
最简单的方法是直接省略子句。
-
^ 是的 - 使用该代码实际尝试的内容更像是
WHERE kat_id = '%',我猜这不是预期的行为。 -
%表达式适用于like子句,所以是的。 -
我让它与“喜欢”一起使用。当然,如果两者都设置为通配符,这是一个愚蠢的说法,但大多数时候 kat_id 将被分配一个数字,但同时我希望能够显示所有子猫。我也希望有可能做相反的事情,只看一个特定的 subkat。