【问题标题】:PDO Exception 1049 when migrating PHP application from MySQL从 MySQL 迁移 PHP 应用程序时出现 PDO 异常 1049
【发布时间】:2014-11-15 15:49:54
【问题描述】:

我一直在尝试将以下mysql连接函数迁移到PDO:

function validate_email_input($email)
    {
      $dbc = @mysql_connect('localhost', 'userName', '******');
      mysql_select_db('users', $dbc);

      $query = "SELECT email FROM user_list WHERE email='$email'";
      if ($result = mysql_query($query, $dbc))
        {
        $row = mysql_fetch_array($result);
        if ($row['email'] == $email)
            {
            return TRUE;
            }
          else
              {
              return FALSE;
              }
        }
        else
            {
            echo '<p class="error">Could not retrieve he data because:<br />' . mysql_error($dbc) . '.</p>
                    <p>The query being run was: ' . $query . '</p>';
            }
      }

这很好用。但是当我尝试使用以下 PDO 函数来获得相同的结果时出现错误:

function validate_email_input($email)
    {
        // Step 1: Establish a connection
        $db = new PDO("mysql:host=localhost;dbname=users", "userName", "******");

        // Step 2: Construct a query
        $query = "SELECT * FROM user_list WHERE email = '$email'";

        // Step 3: Send the query
        $result = $db->query($query);

        // Step 4: Iterate over the results
        if ($result)
            {
            $row = $result->fetch(PDO::FETCH_ASSOC);
            if ($row['email'] == $email)
                {
                return TRUE;
                }
              else
                  {
                  return FALSE;
                  }
            }
        // Step 5: Free used resources
        $result->closeCursor();
        $db = null;
    }

是的——我确实用 try-catch 尝试了上述功能,但这不会影响任何事情。我仍然收到错误: 致命错误:未捕获异常 'PDOException' 并带有消息 'SQLSTATE[HY000] [1049] 未知数据库 'users''

我正在使用 Bitnami RubyStack (v. 1.9.3-25) 中包含的 apache2 模块,它使用 PHP 版本 5.4.3 已经检查过 php.ini 文件并且所有 PDO 扩展名都未注释。 请帮忙!谢谢

【问题讨论】:

  • pdo 函数及其所有 cmets 均基于 sitePoint 文章。我是 PDO 的初学者。
  • 好吧,您的查询不安全..如果您没有清理/转义电子邮件,以防您直接从客户那里获取...请改用准备好的语句
  • 谢谢。我知道这不是最佳实践,但输入 ($email) 在发送到此函数之前会在主登录脚本中进行检查。我将把它移到这个函数中,但首先我需要 PDO 来识别数据库确实存在。

标签: php mysql pdo bitnami


【解决方案1】:

找到了解决方案!显然,它希望我在创建 PDO 对象时指定端口号 (localhost:3307) 而不仅仅是 localhost。有人知道如何更改 Windows 版 Bitnami RubyStack 中的默认 localhost 端口吗?

【讨论】:

    猜你喜欢
    • 2015-03-15
    • 2021-02-02
    • 1970-01-01
    • 2018-02-04
    • 1970-01-01
    • 2014-04-23
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多