iOS нет связи между приложением iPhone и базой данных MySQL через PHP

Мне нужна помощь, чтобы понять, почему мое приложение для 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);
?>

код для айфона

- (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];

}

person Jason S    schedule 30.07.2012    source источник
comment
Вы проверяли журналы вашего веб-сервера, чтобы увидеть, действительно ли БЫЛО попадание в php-скрипт? Он вполне может быть подключен, но в вашем скрипте есть ошибка, которая убивает его до того, как произойдет какой-либо вывод.   -  person Marc B    schedule 30.07.2012
comment
Я бы не стал обращаться к таким удаленным ресурсам. Попробуйте загрузить его в сафари на устройстве, чтобы сначала проверить, работает ли он.   -  person Jessedc    schedule 30.07.2012
comment
Спасибо Марк и Джесси за ваши отзывы @Marc: я не совсем уверен, как проверить журналы моего сервера, но я посмотрю на это. Кроме того, правильно ли я реализовал NSURL и NSData?   -  person Jason S    schedule 30.07.2012
comment
@Jesse Как вы рекомендуете получить доступ к базе данных mySQL? На самом деле у меня сейчас нет айфона, и я полагаюсь на симулятор. Есть ли разница в использовании симулятора по сравнению с работой на iphone?   -  person Jason S    schedule 30.07.2012
comment
Вам нужно заглянуть в NSURLConnection   -  person Jessedc    schedule 30.07.2012


Ответы (1)


Ошибка здесь $query = "INSERT INTO messages (message,date) VALUES ('$_GET["message"]',NOW())";

Должно быть

$query = "INSERT INTO messages (message,date) VALUES ('" . $_GET["message"] . "', NOW())";

or

$query = "INSERT INTO messages (message,date) VALUES ('${_GET["message"]}', NOW())";
person Alexander Larikov    schedule 30.07.2012
comment
Я был бы очень осторожен с этим, так как он уязвим для инъекций. - person andy; 30.07.2012
comment
Это правда, я просто указал OP на место в коде, в котором есть синтаксическая ошибка. - person Alexander Larikov; 30.07.2012