我正在尝试构建一个使用来自在线mysql数据库的数据的iPhone应用程序。 (请注意,编程对我来说是新的)
我的应用程序中有这段代码,应该连接到我的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;
}
}
在我的网站上(由网络托管公司托管)我有一个名为“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模拟器卡住了一段时间,之后我告诉我输入的值是错误的(这意味着查询不返回任何值。) 我以什么方式编辑这两段代码才能使其工作? 提前谢谢。
答案 0 :(得分:1)
试试这段代码 NSURL * url = [NSURL URLWithString:[NSString stringWithFormat:@ \“http://www.example.com/file.php?data=this \”]]; NSError *错误; NSString * mydata = [NSString stringWithContentsOfURL:url encoding:NSASCIIStringEncoding error:&amp; error];
答案 1 :(得分:1)
这只是一个反复试验的问题。我可以自己将所有代码放入项目并测试它,但这不是Stack Overflow的目的而且我太懒了。
执行其他程序员的工作:在任何地方设置断点和/或使用NSLog("result: %@",result)
。使用NSLog
转储您的网址,然后使用您的网络浏览器进行尝试。如果有错误,请修复它并再次尝试您的项目,如果没有,请继续尝试。
此外,我从未见过这种语言action:@selector(sendLogin);
它看起来像是另一个复制/粘贴错误。
答案 2 :(得分: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];