2015-05-07 8 views
0

Я использую следующий код для кодирования на стороне клиента. Он не работает так, как я хочу, и не сохраняю данные на удаленном сервере. Если я передаю ссылку непосредственно в веб-браузер, она будет сохранять данные в удаленной базе данных.Невозможно вставить данные в удаленную базу данных

стороне клиента:

-(IBAction)Save:(id)sender { 
     NSString *insrt=[NSString stringWithFormat:@"http://localhost/basInsertv1.php?Zipcode=%i&Locality=%@&Propertytype=%@&pricerange=%@&Bedrooms=%i&Bathrooms=%i&Possession=%@&Propertyage=%@&Rating=%@&Parking=%i&Powerbackup=%i&Security=%i&Swimmingpool=%i",zipcodetf.text.intValue,localitytf.text,proprtytypetf.text,sliderresltlabel.text,bedroomstf.text.intValue,bathrooms.text.intValue,possesiontf.text,propertyAge.text,rating.text,parking.text.intValue,pbu.text.intValue,sec.text.intValue,swim.text.intValue]; 
     NSData *data=[NSData dataWithContentsOfURL:[NSURL URLWithString:insrt]]; 
     NSString *r=[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; 
     NSLog(@"%@",r); 
    } 

стороне сервера:

<?php 

     $dbhost = 'localhost'; 
     $dbuser = 'root'; 
     $dbpass = ''; 
     $db = 'BuyAndSell'; 
     //$dbtable ='bas'; 
     // Connect Database 
     $conn = mysql_connect($dbhost,$dbuser,$dbpass) or die (mysql_error()); 
     mysql_select_db($db, $conn) or die(mysql_error()); 
     if (isset ($_GET['Zipcode']) && isset ($_GET['Locality']) && isset ($_GET['Propertytype']) && isset ($_GET['pricerange']) && isset ($_GET['Bedrooms']) && isset ($_GET['Bathrooms']) && isset ($_GET['Possession']) && isset ($_GET['Propertyage']) && isset ($_GET['Rating']) && isset ($_GET['Parking']) && isset ($_GET['Powerbackup']) && isset ($_GET['Security']) && isset ($_GET['Swimmingpool'])) 
     { 
      $zipcode=$_GET['Zipcode']; 
      $locality=$_GET['Locality']; 
      $propertytype=$_GET['Propertytype']; 
      $pricerange=$_GET['pricerange']; 
      $bedrooms=$_GET['Bedrooms']; 
      $bathrooms=$_GET['Bathrooms']; 
      $possession=$_GET['Possession']; 
      $propertyage=$_GET['Propertyage']; 
      $rating=$_GET['Rating']; 
      $parking=$_GET['Parking']; 
      $powerbackup=$_GET['Powerbackup']; 
      $security=$_GET['Security']; 
      $swimmingpool=$_GET['Swimmingpool']; 
     } 

     else 
     { 
     echo "failed"; 
     } 

      $sql ="INSERT INTO bas(id, zipcode, locality, propertytype,Pricerange,bedrooms,bathrooms,possession,propertyage,rating,parking,powerbackup,security,swimmingpool)VALUES(NULL,'$zipcode','$locality','$propertytype','$pricerange','$bedrooms', '$bathrooms', '$possession', '$propertyage','$rating','$parking','$powerbackup','$security','$swimmingpool');"; 

      $res = mysql_query($sql,$conn) or die(mysql_error()); 
      if ($res) 
      { 
       echo "Success"; 
      } 
      else 
      { 
       echo "faild to insert"; 
      } 

     /* } 
     else 
     { 
      echo "successrr"; 

    }*/ 
    ?> 

Это печать failedSuccess, который является правильным. Проблема в моем клиентском коде. Он не хранит данные в удаленной базе данных.

ответ

0

Пожалуйста, измените строку вставки в следующей строке кода может быть это поможет:

NSString *insrt=[NSString stringWithFormat:@"http://localhost/basInsertv1.php?Zipcode=%i&Locality=%@&Propertytype=%@&pricerange=%@&Bedrooms=%i&Bathrooms=%i&Possession=%@&Propertyage=%@&Rating=%@&Parking=%i&Powerbackup=%i&Security=%i&Swimmingpool=%i",zipcodetf.text.intValue,localitytf.text,proprtytypetf.text,sliderresltlabel.text,bedroomstf.text.intValue,bathrooms.text.intValue,possesiontf.text,propertyAge.text,rating.text,parking.text.intValue,pbu.text.intValue,sec.text.intValue,swim.text.intValue]; 

    NSString *newInsrStr = [string stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
+0

Ура! Это работает. Но можете ли вы объяснить, почему мой код не работал? @Vijay Masiwal –

0

Я думаю, что это потому, что вы используете «локальный» в вашем URL. Попробуйте ввести правильный IP-адрес для вашего сервера (например, 192.168.0.1) СОВЕТ: 127.0.0.1 НЕВЕРНО.

Вы также можете регистрировать все посещения на сервере в файл или проверять журнал сервера, если сайт был вызван.

Ваш код сервера страшен я до сих пор не нравится, но попробуйте так:

<?php 
    $dbhost = 'localhost'; 
    $dbuser = 'root'; 
    $dbpass = ''; 
    $db = 'BuyAndSell'; 
    //$dbtable ='bas'; 
    // Connect Database 
    $conn = mysql_connect($dbhost,$dbuser,$dbpass) or die (mysql_error()); 
    mysql_select_db($db, $conn) or die(mysql_error()); 
    if (isset ($_GET['Zipcode']) && isset ($_GET['Locality']) && isset ($_GET['Propertytype']) && isset ($_GET['pricerange']) && isset ($_GET['Bedrooms']) && isset ($_GET['Bathrooms']) && isset ($_GET['Possession']) && isset ($_GET['Propertyage']) && isset ($_GET['Rating']) && isset ($_GET['Parking']) && isset ($_GET['Powerbackup']) && isset ($_GET['Security']) && isset ($_GET['Swimmingpool'])) 
    { 
//remember to escape received data! 
     $zipcode=$_GET['Zipcode']; 
     $locality=$_GET['Locality']; 
     $propertytype=$_GET['Propertytype']; 
     $pricerange=$_GET['pricerange']; 
     $bedrooms=$_GET['Bedrooms']; 
     $bathrooms=$_GET['Bathrooms']; 
     $possession=$_GET['Possession']; 
     $propertyage=$_GET['Propertyage']; 
     $rating=$_GET['Rating']; 
     $parking=$_GET['Parking']; 
     $powerbackup=$_GET['Powerbackup']; 
     $security=$_GET['Security']; 
     $swimmingpool=$_GET['Swimmingpool']; 

     $sql ="INSERT INTO bas(id, zipcode, locality, propertytype,Pricerange,bedrooms,bathrooms,possession,propertyage,rating,parking,powerbackup,security,swimmingpool)VALUES(NULL,'$zipcode','$locality','$propertytype','$pricerange','$bedrooms', '$bathrooms', '$possession', '$propertyage','$rating','$parking','$powerbackup','$security','$swimmingpool');"; 

     // insert into database only if all parameters are given 
     $res = mysql_query($sql,$conn) or die(mysql_error()); 
     if ($res) { 
      echo "Success"; 
     } 
     else { 
      echo "faild to insert"; 
     } 
    } 
    else { 
    echo "failed - data missing"; 
    } 

Я также рекомендуем отправлять данные с помощью POST - серверы имеют ограничения на длину данных GET

Смежные вопросы