问题
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 || '%'");
来源:https://stackoverflow.com/questions/30487892/oci-bind-by-name-doesnt-work-with-like-clause