如何解决在PHP / MySQL中比较变量字符串相等性的最佳方法是什么?
| 我正在尝试检查通过URL传递的字符串,并从与该字符串匹配的MySQL数据库获取所有结果。 我根据输入发送不同的查询,但是有问题的查询基本上是这样的(实际上要长得多):if ($projectsname) {$result = mysql_query(\"SELECT item FROM items WHERE projectname=$projectsname\",$db)}
问题是$ projectsname是一个字符串。我所有其他查询都返回一个整数,并且工作正常。但是在这种情况下,除非在引号中加上引号,否则我无法在实际的PHP代码中得到正确的结果,这就是我的做法:
$projectsname = (isset($_GET[\'projectname\']) && !empty($_GET[\'projectname\'])) ? \'\"\'. $_GET[\'projectname\'] .\'\"\' : 0;
...将引号附加到创建变量的数据上。那行得通。在我看来这是错误的。
有没有更好的方法进行比较?
(我希望我可以说这是一个新手问题,但这是我多年来尝试进行编码的设计师经常遇到的麻烦。)
如果您比我在这里使用的术语更好,请随时编辑问题(让我知道您的编辑是什么,我很难措辞。)
解决方法
if ($projectsname) {$result = mysql_query(\"SELECT item FROM items WHERE projectname=\'$projectsname\'\",$db)}
您需要引用传递给mysql的字符串。
, 跑
echo \"SELECT item FROM items WHERE projectname=$projectsname\";
查看您实际发送的查询。
还应阅读有关ѭ4和SQL注入的一般信息。考虑下面的示例,您的代码容易发生非常典型的SQL注入:
$projectsname = \"123 OR 1=1\";
echo \"DELETE FROM items WHERE projectname=$projectsname\";
, 不建议将纯PHP用于完整的应用程序项目。它使编码人员不必担心诸如转义查询,验证表单数据,安全性,模板化,加载库等基本问题。无需担心程序逻辑,编码人员无需花费太多时间来担心语法。 。只有新手才能做到。我们不是因为时间对我们来说是金钱。
我的建议:使用框架。我个人推荐Codeigniter或Zend。相信我,它将为您节省很多头痛。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。