2014-09-21 37 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端口?