Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Sql在where子句中将主键与另一个值组合时返回空行_Php_Mysql_Sql_Database - Fatal编程技术网

Php Sql在where子句中将主键与另一个值组合时返回空行

Php Sql在where子句中将主键与另一个值组合时返回空行,php,mysql,sql,database,Php,Mysql,Sql,Database,我在下面的sql中得到空行 SELECT * FROM flyers WHERE fId='6' AND 'userId'='400' MySQL返回一个空的结果集 (i.e. zero rows). (Query took 0.0004 sec) 但是当我使用 SELECT * FROM flyers WHERE fId='6' 显示行 0 - 0 (1 total, Query took 0.0005 sec). 当我得到我的结果时,只使用主键是正确的 但我不知道为什么mysql在

我在下面的sql中得到空行

SELECT * FROM flyers WHERE fId='6' AND 'userId'='400' 
MySQL返回一个空的结果集

(i.e. zero rows). (Query took 0.0004 sec)
但是当我使用

SELECT * FROM flyers WHERE fId='6'
显示行

0 - 0 (1 total, Query took 0.0005 sec).
当我得到我的结果时,只使用主键是正确的

但我不知道为什么mysql在使用主键和时返回空行

注意:-fId是传单表主键。

尝试以下操作:

  • 对列名使用反勾号,而不是单引号
  • 如果
    userid
    是int数据类型,则意味着您必须删除单引号
    userid=400

  • 如果
    fid
    是字符串,则表示
    fid='6'

    从传单中选择*,其中
    fId
    =6和
    userId
    =400

  • 试试这个:

  • 对列名使用反勾号,而不是单引号
  • 如果
    userid
    是int数据类型,则意味着您必须删除单引号
    userid=400

  • 如果
    fid
    是字符串,则表示
    fid='6'

    从传单中选择*,其中
    fId
    =6和
    userId
    =400


  • 在查询中,您只有一个错误,那就是在
    userId
    周围使用了单引号。改用反勾号或不使用:

    SELECT * FROM flyers WHERE fId='6' AND userId='400'  
    
    SELECT * FROM flyers WHERE fId=6 AND userId=400// safe not to use quotes
    
    但我建议不要在数字周围加引号,原因如下

    真正的问题归结为类型转换。当您将数字放在引号内时,它被视为字符串,MySQL必须将其转换为数字才能执行查询。虽然这可能需要一点时间,但当MySQL不能很好地转换字符串时,真正的问题就开始出现了


    例如,MySQL将把诸如“123”之类的基本字符串转换为
    整数
    123,但将把诸如“
    18015376320243459
    ”之类的较大数字转换为浮点。由于浮点可以四舍五入,您的查询可能会返回不一致的结果。

    在您的查询中,您只有一个错误,那就是在
    userId
    周围使用了单引号。改用反勾号或不使用:

    SELECT * FROM flyers WHERE fId='6' AND userId='400'  
    
    SELECT * FROM flyers WHERE fId=6 AND userId=400// safe not to use quotes
    
    但我建议不要在数字周围加引号,原因如下

    真正的问题归结为类型转换。当您将数字放在引号内时,它被视为字符串,MySQL必须将其转换为数字才能执行查询。虽然这可能需要一点时间,但当MySQL不能很好地转换字符串时,真正的问题就开始出现了



    例如,MySQL将把诸如“123”之类的基本字符串转换为
    整数
    123,但将把诸如“
    18015376320243459
    ”之类的较大数字转换为浮点。由于浮点可以四舍五入,您的查询可能会返回不一致的结果。

    如果userid为int data type意味着删除单引号userid=400是否检查是否存在userid=400的条目尝试从fId=6和userid=400的传单中删除引号SELECT*,删除userid列名和值中的单引号,因为其列名不是值或字符串SELECT*来自fId='6'和userId='400''userId'为字符串的传单。也许您的意思是“userid”,如果userid是int数据类型,则表示删除单引号userid=400是否检查是否存在userid=400的条目尝试从fId=6和userid=400的传单中删除引号SELECT*,删除userid列名和值中的单引号,因为其列名不是fId=6的传单中的值或字符串SELECT*userId='400''userId'是一个字符串。也许你的意思是userid,userid和userid的区别是什么sql@smehsoud,
    userId
    是一个标识符(这里是一个列名),
    'userId'
    是一个字符串文本。多亏了“userId”和userId之间的所有冲突。fid和userId数据类型都是int,但在我的查询中fid是正确的,但我使用“userId”而不是userId列名。我对定义列名感到困惑任何mysql定义名称链接请问“userId”和userId之间的区别是什么sql@smehsoud,
    userId
    是一个标识符(此处为列名),
    “userId”
    是一个字符串文本。多亏了“userId”和userId之间的所有冲突。fid和userId数据类型都是int,但在我的查询中fid是正确的,但我使用的是“userId”而不是userId列名。我对定义列名感到困惑任何mysql定义名称链接请确认主要原因。感谢澄清主要原因。