2013-03-18 67 views
0

我試圖建立一個從在線MySQL數據庫使用數據的iPhone應用程序。 (請注意,編程是新的我)iPhone應用程序 - Mysql數據庫連接不工作

我有這樣一段代碼在我的應用程序,這是應該連接到我的PHP文件:

//loginAction 

    - (void) loginAction 
    { 
     if ([email.text isEqualToString:@""] || [password.text isEqualToString:@""]) { 
      UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error!" message:@"please fill in everything":self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 
      [alert show]; 
      return; 
     } 
     //database connection 
     NSString *strURL = [NSString stringWithFormat:@"http://db.imagine-app.nl/login.php?email=%@&password=%@", email.text, password.text]; 


     //execute php 
     NSData *dataURL = [NSData dataWithContentsOfURL:[NSURL URLWithString:strURL]]; 

     //receive data 
     NSString *strResult = [[NSString alloc] initWithData:dataURL encoding:NSUTF8StringEncoding]; 

     if ([strResult isEqualToString:@"1"]) 
     { 

     action:@selector(sendLogin); 

     }else 
     { 
      //invalid information 
      UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"E-mail or password wrong" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 
      [alert show]; 
      return; 

     } 
    } 

在我的網站(由Web託管公司託管)我有一個名爲「login.php中」一個php文件,其中包含下面的代碼:

<?php 
if (isset($_GET["email"]) && isset($_GET["password"])){ 
       $email = $_GET["email"]; 
       $password = $_GET["password"]; 
       $result = login($email, $password); 
       echo $result; 
       } 

function makeSqlConnection() 
{ 
$DB_HostName = "db.imagine-app.nl"; 
$DB_Name = "*************"; 
$DB_User = "*************"; 
$DB_Pass = "*************"; 


    $con = mysql_connect($DB_HostName,$DB_User,$DB_Pass) or die(mysql_error()); 

     mysql_select_db($DB_Name,$con) or die(mysql_error()); 

    return $con; 
} 

function disconnectSqlConnection($con) 
{ 
    mysql_close($con); 
} 

function login($email, $password) 
{ 

    $con = makeSqlConnection(); 

    $sql = "SELECT * from user WHERE email = '$email' AND password = '$password';"; 
    $res = mysql_query($sql,$con) or die(mysql_error()); 

    $res1 = mysql_num_rows($res); 

    disconnectSqlConnection($con); 

    if ($res1 != 0) { 
     return 1; 
    }else{ 
     return 0; 
    }// end else 


} 

?> 

代碼這兩件應讓我來訪問我的數據庫,但是當我測試它(把電子郵件和密碼在表,並嘗試從我的應用程序登錄),iPhone模擬器stuses一段時間,之後,我告訴米Ë我輸入的值是錯誤的(這意味着該查詢返回值。) 以何種方式做我必須編輯這些兩段代碼,使其工作? 預先感謝您。

+0

1st close the'''here:'NSString * strURL = [NSString stringWithFormat:@「http://db.imagine-app.nl/login.php?email=%@&password=%@」,email。文本,password.text];' – 2013-03-18 21:01:19

回答

1

這僅僅是試驗和錯誤的問題。我可以將所有的代碼放入一個項目中並進行測試,但這不是Stack Overflow的目的,我太懶惰了。

做好每一其他程序員做什麼:到處設置斷點和/或使用NSLog("result: %@",result)。轉儲您的網址NSLog並嘗試使用您的網絡瀏覽器。如果出現錯誤,請修復並再次嘗試您的項目,如果沒有,請繼續嘗試。

而且,我從來沒有這種類型的語言action:@selector(sendLogin);的它看起來像另一個複製/粘貼錯誤見過。

+0

非常感謝!在NSLog的告訴我數據庫沒有給我任何東西我檢查我的數據庫連接,並且事實證明,我做我的應用程序試圖連接到錯誤的網址:db.imagine-app.nl,和我的PHP文件只是在www.imagine-app.nl .. – 2013-03-20 12:59:54

+0

你是歡迎。另外請注意,我們不會調用連接到login.php的「數據庫連接」,而是「Web服務器」或「PHP」請求。數據庫是從PHP調用的。這意味着你將會訪問你的數據庫。 – user1122069 2013-03-21 17:50:28

0

在這一行:

NSString *strURL = [NSString stringWithFormat:@"http://db.imagine-app.nl/login.php?email=%@&password=%@, email.text, password.text]; 

你忘了使用雙引號來關閉的字符串。應該是:

NSString *strURL = [NSString stringWithFormat:@"http://db.imagine-app.nl/login.php?email=%@&password=%@", email.text, password.text]; 
+0

抱歉,出現了一些錯誤複製代碼,所以我不得不重新輸入一個部分,我犯了這個愚蠢的錯誤,謝謝你的快速響應,雖然! – 2013-03-18 21:19:27

+0

哦,我甚至沒有寫Objective-但是我知道這是錯誤的,但是當你用'echo「Hello」;'或者其他東西來代替你的PHP代碼時會發生什麼呢?這樣你就知道它是你的iOS還是PHP代碼 – edwardmp 2013-03-18 21:25:04

1

讓我們試試這個代碼 NSURL * URL = [NSURL URLWithString:[的NSString stringWithFormat:@ \ 「http://www.example.com/file.php?data=this \」]; NSError *錯誤; NSString * mydata = [NSString stringWithContentsOfURL:url encoding:NSASCIIStringEncoding error:& error];

相關問題