2014-09-21 67 views
0

迁移PHP应用程序时,我一直在尝试下面的MySQL连接功能迁移到PDO:PDO异常1049从MySQL

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]未知数据库 '用户''

我使用附带Bitnami RubyStack apache2的模块(V 。1.9.3-25),它使用PHP版本5.4.3 已经检查过php.ini文件,并且所有的PDO扩展都没有注释。 请帮忙!谢谢

+0

pdo函数及其所有评论均基于sitePoint文章。我是一个完整的初学者与PDO。 – 2014-09-21 16:20:00

+0

以及您的查询是不安全的..如果你没有消毒/逃脱电子邮件,如果你直接从客户端采取...使用准备好的语句,而不是 – 2014-09-21 16:22:04

+0

谢谢。我知道这不是最佳做法,但输入($ email)在发送到此函数之前在主登录脚本中进行检查。我将把它移到这个函数中,但首先我需要PDO来识别数据库确实存在。 – 2014-09-21 16:28:43

回答

1

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