Мне нужна помощь, пытаясь понять, почему мое приложение для iPhone не общается с моим PHP. У меня есть текстовое поле, в котором пользователь может ввести сообщение, и есть кнопка, которая должна сообщать приложению, когда текст был введен и должен быть отправлен в мою базу данных mySQL.
Мой код PHP и iOS вставлен ниже, но я также включил некоторые инструкции для отладки.
Я помещаю разрыв в строку if([serverOutput...)
и в этот момент получаю следующее:
alertsuccess UIAlertView * 0x00000000 dataURL NSData * 0x00000000 messageString __NSCFString * 0x0685e7a0 @"hi" serverOutput __NSCFConstantString * 0x00b75a7c url NSURL * 0x06869540 @"http://www.mysite.com/connect.php?message=hi"
Из точки останова отладки я бы ожидал, что serverOutput скажет "ОК", но это пустое, что, я считаю, означает, что оно не связано с моим PHP. Ваша помощь приветствуется, как исправить это.
<?php
// Connecting, selecting database
$link = mysql_connect("localhost", "user", "password")
or die('Could not connect: ' . mysql_error());
mysql_select_db("mydb") or die('Could not select database');
// Performing SQL query
$query = "INSERT INTO messages (message,date) VALUES ('$_GET["message"]',NOW())";
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
echo "OK";
// Free resultset
mysql_free_result($result);
// Closing connection
mysql_close($link);
?>
Код iPhone
- (IBAction)postmessage:(id)sender {
self.message = self.messageField.text;
NSString *messageString = self.message;
UIAlertView *alertsuccess;
//construct an URL for your script, containing the encoded text for parameter value
NSURL* url = [NSURL URLWithString:
[NSString stringWithFormat:
@"http://www.mysite.com/connect.php?message=%@",messageString]];
NSData *dataURL = [NSData dataWithContentsOfURL:url];
NSString *serverOutput = [[NSString alloc] initWithData:dataURL encoding: NSASCIIStringEncoding];
if([serverOutput isEqualToString:@"OK"]) {
alertsuccess = [[UIAlertView alloc] initWithTitle:@"Posted" message:@"Done"
delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
} else {
alertsuccess = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Done"
delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
}
[alertsuccess show];
}
Ошибка здесь $query = "INSERT INTO messages (message,date) VALUES ('$_GET["message"]',NOW())";
Должно быть
$query = "INSERT INTO messages (message,date) VALUES ('" . $_GET["message"] . "', NOW())";
или
$query = "INSERT INTO messages (message,date) VALUES ('${_GET["message"]}', NOW())";