php
  • mysql
  • 2011-06-29 32 views 1 likes 
    1

    我试图做题如下:“其中”在PHP条款/ MySQL的选择 - 从 - 在那里

    $query = 'Select first_name, last_name , user_name FROM table1 WHERE fullname = "$name_given"' 
    

    其中全名是FIRST_NAME +“” +姓氏所以它不应该是这样的:

    $query = 'Select first_name, last_name FROM table1 WHERE concat(first_name, ' ', last_name) = "name_given"' 
    

    除非它不工作......告诉我,没有一列这样的...我不存储在任何地方的全名(我不认为我允许添加它)...有什么帮助吗?

    编辑:哎呀,在这里输入错了。我没有copypasta'd它,所以是...语法上它是正确的...

    编辑2:创建它。 Apparnelty我需要把\“$ name_given \”,除非它只是假设它是引用的一部分......非常感谢您回答我的措辞很差的问题。

    +0

    存储在$ name_given中的值是什么?我的意思是$ name_given是你的full_name或其他东西,如first_name或last_name ..? – GitsD

    +0

    “name_given”是你要找的名字,就像“David”或“john maximillian dewey”或“max mcfightmaster”之类的... –

    回答

    6

    因为你是串联firstnamelastname,不first_namelast_name(注意失踪_)。

    此外,请不要在查询中使用未转义的变量!总是逃避它:

    $query = "select ... where concat(first_name, ' ', last_name) = '" 
        . mysql_real_escape_string($name) . '"'; 
    
    +0

    你可以请建议我哪个更好用于安全puposes。像filter_var()或mysql_real_escape_string()。谢谢 – GitsD

    +0

    'filter_var'用于通用过滤(即确保电子邮件有效),但在将变量传递给SQL查询时应使用'mysql_real_escape_string' - 不管它是否已被过滤。我接受的唯一例外是当我用'(int)$ var'将数字转换为整数时。 – cweiske

    +0

    非常感谢你的队友..我只是想知道为什么mysql_real_escape_string,如果我们可以在传递查询之前筛选变量。谢谢。 – GitsD

    3

    您不是从表格中选择,而是试图对两个字段进行联合,并从结果中进行选择,这没有任何意义。

    您是不是要找类似的信息(注意修改名字和姓氏):

    $query = 'Select first_name, last_name FROM YourTable WHERE concat(first_name, ' ', last_name) = "name_given"' 
    
    +0

    是的,那是我的代码...注意到编辑..它仍然不起作用,虽然= X –

    相关问题