2013-03-18 40 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];

相关问题