【问题标题】:Results not expected if/elseif/else 没有预期的结果
【发布时间】:2011-03-24 13:52:14
【问题描述】:

这是我的数据库

产品 - id、title、code

unname - id、电子邮件、姓名、代码

======== edited ============

问题:

当我使用 email@email.com 我总是得到响应 1 - 这意味着它有效

当我使用 email1@email.com 我可以一遍又一遍地添加相同的产品并且总是得到响应 2 - 这意味着有问题。

有什么想法吗?

谢谢

edit == 只需修复代码并再次粘贴即可。 我没有语法错误。

再次编辑。

它现在正在使用一些 sql 修改。第一次尝试使用 PHP 必须学习更多.. 不能一一提到你的名字。但再次感谢你!

【问题讨论】:

  • 你在这里错过了$ if (user2 == "email")
  • else 块中缺少一些花括号和引号。
  • 再次粘贴代码..实际上我没有语法错误。

标签: php mysql


【解决方案1】:

@nick rulez 说的是真的,你忘了 $ 符号。

编辑:但是,mysql_fetch_array 将ALSO返回结果,例如:

Array(
[0] => 'the@email.com'
[1] => 'name'
);

您应该尝试使用 mysql_fetch_assoc,它会生成一个包含您要查找的键的数组。

Array(
[**email**] => 'the@email.com'
[name] => 'name'
);

干杯!

【讨论】:

  • mysql_fetch_array 默认生成一个组合数组/散列结构,除非您专门请求这两种类型中的一种。
  • 你说得对,抱歉。尽管如此,根据@joe 发布的代码提取,仅获取关联数组可能更有效。干杯!
【解决方案2】:

如果将 0 int 值与非数字的字符串值进行比较,结果将始终为真

if(0 == "Hello") -> true

因为从 string 到 int 的向下转换返回 true (0) 并且 0 == 0 始终为 true

编辑:好吧,你只是错过了 $ -.-

【讨论】:

  • 但是为什么 email@email.com 总是有效但不能与 email1@email.com 一起使用?这让我很困惑:(
  • 我敢打赌,您的数据库中没有 email1,您正在做一些非常奇怪的事情,在数据库中搜索电子邮件,然后将您收到的电子邮件与您查找的电子邮件进行比较,所以如果电子邮件不在数据库中,第一次检查是假的,如果东西检查是真的,你会得到响应 2
  • 我的数据库中有 email1@email.com 具有相同的产品代码。而 email@email.com 具有唯一的产品代码。我无法使用 email@email.com 添加相同的产品 [奇怪]
【解决方案3】:

这是做什么的?

if (user2 == "email")

user 之前需要一个$,而"email" 应该是$email,对吧?

另外,sql 注入的代码已经成熟。 在将所有输入变量放入查询之前,请使用 mysql_real_escape_string 转义它们(更多信息:Protect against SQL injection)。

【讨论】:

    猜你喜欢
    • 2021-09-23
    • 1970-01-01
    • 2022-10-06
    • 1970-01-01
    • 1970-01-01
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    • 2020-11-28
    相关资源
    最近更新 更多