简体   繁体   English

在PHP PDO中绑定参数

[英]Binding Paramaters in PHP PDO

I am trying to create a dynamic query builder. 我正在尝试创建一个动态查询生成器。

I have two bits of code. 我有两位代码。

The first bit, creates the PDO object (I know this works) and then runs the search function in my querybuilder. 首先,创建PDO对象(我知道这可行),然后在我的querybuilder中运行搜索功能。

include 'core/database/dbloader.php';
$domainName = "lomcn.org";

$query = new dbquery(Connection::make($dbconfig['domainhistory']));
$query->search('dns','domain',$domainName);

The search function is - 搜索功能是-

public function search($table,$field,$domainName)
{
    $statement = $this->pdo->prepare("SELECT * FROM {$table} WHERE {$field} LIKE :domain");
    $statement->bindParam(":domain",$domainName);
    $statement->execute();

    return ($statement->fetchAll(PDO::FETCH_ASSOC));
}

This does not return ANY errors, however no data is displayed. 这不会返回任何错误,但是不会显示任何数据。 Am I missing something? 我想念什么吗? The purpose is you should be able to run 目的是您应该能够运行

$query->search(table,field,value); 

and it just works. 它就是有效的。

Of course nothing is being displayed, you have not told it to display anything. 当然,什么都不会显示,您还没有告诉它什么都不会显示。 No echo command. 没有回显命令。 No print command. 没有打印命令。 Nothing. 没有。

Instead of $query->search(table,field,value); 代替$query->search(table,field,value); You could try something similar to; 您可以尝试类似的方法;

foreach ($query->search(table,field,value) as $row) {
    print $row['DB_COLUMN_1'];
    print $row['DB_COLUMN_2'];
    print $row['DB_COLUMN_3'];
}

Also, if you are using a LIKE clause in your SQL statement you NEED to use percentage signs as wildcards or the LIKE clause wont work as expected. 另外,如果您在SQL语句中使用LIKE子句,则需要使用百分号作为通配符,否则LIKE子句将无法按预期工作。 So unless you are looking for an exact match, change your bindParam to: 因此,除非您要寻找完全匹配的内容,否则将bindParam更改为:

$statement->bindParam(":domain", "%" . $domainName . "%");

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM