为SQL请求追加PHP字符串

为SQL请求追加PHP字符串,php,sql,postgresql,Php,Sql,Postgresql,我有一个PHP函数,它使用PDO调用SQL查询。我试图在SQL中使用LIKE运算符查找字符串的匹配项,但这要求字符串以“%”开头和结尾 现在,我的搜索词来自一个PHP字符串,我想知道是否有任何方法可以附加该字符串以包含“%”。目前,我试图单独添加它,但它似乎不起作用 function searchBay($address) { // STUDENT TODO: // Change lines below with code to retrieve the Bays with similar ad

我有一个PHP函数,它使用PDO调用SQL查询。我试图在SQL中使用LIKE运算符查找字符串的匹配项,但这要求字符串以“%”开头和结尾

现在,我的搜索词来自一个PHP字符串,我想知道是否有任何方法可以附加该字符串以包含“%”。目前,我试图单独添加它,但它似乎不起作用

function searchBay($address) {
// STUDENT TODO:
// Change lines below with code to retrieve the Bays with similar address from the database
// - - C H E C K - - 
$db = connect();
$sql = "SELECT p.bayid, p.site, p.address, p.avail_wk_start ||' '|| p.avail_wk_end ||' '|| p.avail_wend_start ||' '|| p.avail_wend_end AS avail 
                FROM PeerPark.ParkBay p
                WHERE p.address LIKE (% ':address' %')";
try {
    $stmt = $db->prepare($sql);
    $stmt->bindValue(':address', $address, PDO::PARAM_STR);

    $stmt->execute();
    $row = $stmt->fetchObject();
    $stmt->closecursor();
}   catch (PDOException $e) {
        print "Error searching for bays: " . $e->getMessage();
        die();
}
print_r($row);
return $row; }

将查询结束更改为:

p.address LIKE :address
并按如下方式发送参数:

$stmt->bindValue(':address', "%$address%", PDO::PARAM_STR);

你应该可以走了。

非常感谢你!!绝对是传奇。