oci_bind_by_name doesn't work with LIKE clause

2019-02-26 22:32发布

问题:

My code is something like this:

$s = ociparse($conn, "SELECT u.email, u.city FROM tickets t, users u WHERE t.userId = u.userId AND u.city LIKE '%:city%'");
$city = $_GET['city'];
oci_bind_by_name($s, ":city", $city);

Apparently, it can't replace the ":city"

The warning I get:

Warning: oci_bind_by_name(): ORA-01036: illegal variable name/number in C:\xampp\htdocs\phpOracle\tickets.php on line 41

回答1:

You need to bind it like this, you have to concatenate the % signs with it and you cannot have your bound variable wrapped in single quotes:

$s = ociparse($conn, "SELECT u.email, u.city FROM tickets t, users u WHERE t.userId = u.userId AND u.city LIKE '%' || :city || '%'");