这是一个有点怪异的一个,我可以很好地编码这完全错了 - 因此,为什么我已经打了同样的错误两次在两天内,在脚本中的完全不同的部分.我正在使用的代码如下:
public function findAll( $constraints = array() ) {
// Select all records
$SQL = 'SELECT * FROM ' . $this->tableName;
// See if there's any constraints
if( count( $constraints ) > 0 ) {
$SQL .= ' WHERE ';
foreach( $constraints as $field => $value ) {
$SQL .= $field . ' = :' . $field . ' AND ';
}
}
// Remove the final AND and prepare the statement
$SQL = substr( $SQL, 0, -5 );
$PDOStatement = $this->PDO->prepare( $SQL );
// Loop through constraints and bind parameters
foreach( $constraints as $field => $value ) {
print 'Binding ' . $field . ' to ' . $value . '
';
$PDOStatement->bindParam( $field, $value );
}
$PDOStatement->execute();
var_dump($PDOStatement);
while ( $results = $PDOStatement->fetch( PDO::FETCH_ASSOC ) ) {
var_dump($results);
}
}
Run Code Online (Sandbox Code Playgroud)
我对使用PDO很新,但基本上我试图传递一系列约束,例如
array( 'active' => 1, 'name' => 'James' )Run Code Online (Sandbox Code Playgroud) 并返回表中的所有行 WHERE active = 1 AND name = 'James'Run Code Online (Sandbox Code Playgroud)
如果我使用这个数组,则从第一个执行SQL
var_dump( )Run Code Online (Sandbox Code Playgroud) 是 SELECT * FROM {table} WHERE active = :active AND name = 'James'Run Code Online (Sandbox Code Playgroud) - 完全符合我的预期.绑定参数打印'Binding active to 1'和'Binding name to James' - 完全符合预期.行存在于数据库中,而第二行var_dump()Run Code Online (Sandbox Code Playgroud) 调用$ results输出什么 - 即没有返回任何行.
如果我传递一个单一约束的数组,例如
array( 'active' => 1 )Run Code Online (Sandbox Code Playgroud),这很好用.似乎只要传递多个约束,它就会停止工作.
| 归档时间: |
|
| 查看次数: |
1335 次 |
| 最近记录: |