ska*_*ama 2 php sql variables sql-like
这是我的第一个问题,我希望它很简单,快速回答!
基本上,我有以下代码:
$variable = curPageURL();
$query = 'SELECT * FROM `tablename` WHERE `columnname` LIKE '$variable' ;
Run Code Online (Sandbox Code Playgroud)
如果我回显$变量,它会打印当前页面的url(这是我页面上的javascript)
最终,我想要的是能够搜索搜索术语是当前页面的URL,并使用前面和后面的通配符.我不确定这是否可行,或者我是否只是语法错误,因为我没有错误,根本没有结果!
我试过了 :
$query = 'SELECT * FROM `tablename` WHERE `columnname` LIKE '"echo $variable" ' ;
Run Code Online (Sandbox Code Playgroud)
但同样,我可能会错过或使用错位的";等等
请告诉我我做错了什么!
cee*_*yoz 24
最终,我想要的是能够搜索搜索术语是当前页面的URL,并使用前面和后面的通配符.
SQL通配符是百分号.因此:
$variable = curPageURL();
$variable = mysql_real_escape_string($variable);
$query = "SELECT * FROM `tablename` WHERE `columnname` LIKE '%{$variable}%'";
Run Code Online (Sandbox Code Playgroud)
注意:我添加了一些额外的代码.mysql_real_escape_string()将故意或意外地使用会破坏您的SQL语句的字符来保护您免受用户的侵害.你最好使用参数化查询,但这是一个比这个简单修复更复杂的主题.
另请注意:我也修复了你的字符串引用.如果该字符串是双引号,并且您在结尾处缺少引号,则只能直接在字符串中使用变量$query.
编辑2015年1月17日:刚刚得到一个upvote,所以考虑到这一点,请不要再使用这些mysql_*功能了.
使用:
$query = "SELECT * FROM `tablename` WHERE `columnname` LIKE '{$variable}'" ;
Run Code Online (Sandbox Code Playgroud)
为了了解为什么要防止SQL注入攻击,如上所述,我会提交"漏洞的妈妈":

请不要这样做,它很容易受到SQL注入的影响(这是一个包含138个StackOverflow问题的列表,您应该在返回应用程序之前阅读,吸收和理解).使用参数化查询或存储过程.
| 归档时间: |
|
| 查看次数: |
46696 次 |
| 最近记录: |