SQL 中的 SQL 选择,无法按预期工作

我有一个来自表单输入3个变量,并有我这个选择在PHP如果我在输入要搜索$itemName,还给我确切的一个项目,因为它需要,如果我在搜索$typeName或者$itemPrice,还给我的整个列表项目,那不行,我试着做'%$typeName%','%$itemPrice'就像我做的那样$itemName,但无论如何它都会返回我所有的列表。问题是什么?


$stid = oci_parse($conn, "select title, type, price

                          from items 

                          where title like '%$itemName%' 

                             or type like '$typeName' 

                             or price like '$itemPrice'");


月关宝盒
浏览 127回答 2
2回答

富国沪深

与 LIKE 绑定的通用解决方案是:<?php$c = oci_connect("hr", "welcome", "localhost/XE");$s = oci_parse($c,&nbsp; &nbsp; "select city, state_province from locations where city like :bv");$city = 'South%';oci_bind_by_name($s, ":bv", $city);oci_execute($s);oci_fetch_all($s, $res);var_dump($res);?>您必须使用绑定来避免将变量值连接到 SQL 字符串中的 SQL 注入安全问题。它还有助于提高性能和可扩展性。

萧十郎

尝试使用单引号$stid&nbsp;=&nbsp;oci_parse($conn,&nbsp;'Select&nbsp;title,&nbsp;type,&nbsp;price&nbsp;from&nbsp;items&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;where&nbsp;title&nbsp;like&nbsp;'%$itemName%'&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or&nbsp;type&nbsp;like&nbsp;'$typeName'&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or&nbsp;price&nbsp;like&nbsp;'$itemPrice'');
打开App,查看更多内容
随时随地看视频慕课网APP