在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。相信我,它将为您节省很多头痛。     

要回复问题请先登录注册