Php DB包装器where语句

时间:2015-09-24 12:52:06

标签: php where

我在php Pdo中得到了这个:

TC1
     test step 1
     test step 2
     test step 3
TC2
     test step 1
     test step 2
     test step 3

这有效,但是我试图在select中尝试使用where语句,但是它没有用:

$db = DBWrapper::getInstance();

$table = "table";
$columns   = array("id", "firstname", "lastname");
$whereRand = array('categorie_bit = :idRand');
$values    = array('idRand' => 00);
$orderBy   = array('RAND()');

$result_set  = $db->select($table,$columns,Null, Null, $orderBy, 1);

foreach($result_set as $result) {}

有谁知道如何实现这个目标?

2 个答案:

答案 0 :(得分:0)

首先,它不是PDO。但某种自制查询构建器,质量非常低。

而不是使用它,更好地使用vanilla PDO:

$sql = "SELECT id, firstname, lastname FROM table WHERE categorie_bit = :idRand ORDER BY RAND()";
$stmt = $pdo->prepare($sql);
$stmt->execute(array('idRand' => 00));
foreach($stmt as $result) {}

看 - 它会减少你编写的代码,它会让你使用你想要的任何SQL语句。更不用说普通SQL的可读性了,你可以一眼就知道你的查询是做什么的。在看你的函数调用时,你可以告诉你的是WTF。请记住 - 程序不仅仅是为了编写。有时他们必须被阅读。 SQL是可读的。好的查询构建器是可读的。只是一堆变量不是。

答案 1 :(得分:0)

我解决了,这是一个很小的错误......

改变了这个:

$result_set  = $db->select($table,$columns,Null, Null, $orderBy, 1);

到此:

$result_set  = $db->select($table, $columns, $whereRand, $valuesRand, $orderBy, 1);

我忘了增加价值。