小MySQL的bug

时间:2014-07-03 19:16:43

标签: php mysql select

我是PHP和MySQL的新手,我对SELECT查询有点麻烦。我对这个PHP / SQL变量有一些问题:

$dbPassword = mysql_query("SELECT UserData.Password FROM UserData WHERE UserData.EmailAddress = '.$loginEmail.'");

从" EmailAddress"的行中选择值的正确方法是什么?是否与Apache MySQL服务器中的另一个值相同?

所有帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

请注意,$dbPassword将是结果集对象,而不是标量。

您需要从结果集中“获取”行。

文档http://www.php.net/manual/en/function.mysql-query.php

中提供了一个示例

PHP字符串连接也存在问题。

如果您在两个单独的步骤中执行此操作,则可以在执行之前回显(或printf或vardump)包含SQL语句的字符串。

另请注意,在SQL语句中包含“unsafe”值会使您的代码容易受到SQL注入攻击。 Little Bobby Tables

$sql = "SELECT UserData.Password FROM UserData WHERE UserData.EmailAddress = '"
       . mysql_real_escape_string($loginEmail) . "'";
vardump($sql);
$res = mysql_query($sql);

vardump不是必需的;它只是用于调试,这是我们查看即将发送到数据库的字符串内容的一种方式。(当我们调试问题时,它可以帮助我们确定问题是在SQL文本中,还是在数据库中是否存在问题。

我们要测试对mysql_query的调用是否实际返回了结果集,或者是否返回了错误。一旦我们验证了它是一个有效的结果集对象,我们就可以从结果集中获取行。 (执行该操作有多种功能。)

注意:文档中的红色框表示不推荐使用mysql扩展名。新代码应使用mysqli或PDO扩展名。