2015-06-03 64 views
3

我真的很努力去理解爲什麼下面的代碼不會插入我發送的日期?使用PDO爲PHP插入數據到MySQL Xcode

<?php 
$servername = "servername"; 
$username = "username"; 
$password = "passwrd"; 
$dbname = "dbname"; 


$conn = new PDO ("mysql:host=$servername;dbname=$dbname", $username, $password); 
$conn ->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

$Name = $_POST['Name']; 
$Last = $_POST['Last']; 
$email = $_POST['email']; 
$pwd = $_POST['pwd']; 
$userID = $_POST['userID']; 

$sql = "INSERT INTO Users (Name, Last, email, password, userID) VALUES (:var1, :var2, :var3, :var4, :var5) "; 

$q = $conn -> prepare($sql); 

$q -> execute (array(':var1' => $Name, 
       ':var2' => $Last, 
       ':var3' => $email, 
       ':var4' => $pwd, 
       ':var5' => $userID)); 

?> 

如果不是

$Name = $_POST['Name']; 

等等...我硬編碼的值,所以我可能有:

$Name = 'Jane'; 

它增加了數據到數據庫中,但與$ _POST,它在執行線失敗。

我的Xcode的樣子:

NSString *strURL = [NSString stringWithFormat:@"http://www.myserver/AddUser.php?Name=%@&Last=%@&email=%@&pwd=%@&userID=%@", Name, Last, email, pwd, userID]; 
NSData *dataURL = [NSData dataWithContentsOfURL:[NSURL URLWithString:strURL]]; 
NSString *strResult = [[NSString alloc] initWithData:dataURL encoding:NSUTF8StringEncoding]; 

我在SO通過大量的教程和問題走了,我看不出有什麼問題。

+1

我對Xcode一無所知,但看起來像一個GET請求給我。如果這是默認值,並且可以解釋爲什麼'$ _POST'是空的。 – AbraCadaver

+0

@AbraCadaver你是什麼意思?把GET而不是POST?我從我的iPhone應用程序發送數據到一個sql服務器... – user3079872

+0

@ user3079872'print_r($ _ POST)'看看你是否有任何值。 – Alex

回答

3

你的HTTP請求,但您使用的是POST協議訪問數據。你有三個潛在的修復,

  1. 更改PHP使用GET來讀取數據

    $電子郵件= $ _GET [ '電子郵件'];

  2. 更改PHP是不可知的模式(我的偏好)

    $電子郵件= $ _REQUEST [ '電子郵件'];

  3. 更改你的iPhone應用程序發送使用信息。

+0

非常感謝您的解釋。我現在把$ _REQUEST放入數據庫。出於興趣,我將如何更改使用POST發送的應用程序? – user3079872

+0

您必須配置您提供給initWithRequest:delegate:方法的NSMutableURLRequest對象並構造正文數據。 NSMutableURLRequest * request = [[[[NSMutableURLRequest alloc] init] autorelease]; [請求setHTTPMethod:@「POST」]; –

+0

非常感謝,使很多感覺!再次感謝你的幫助。 – user3079872

3

它好像你發出get請求,而不是一個post請求,這意味着你的$_POST是不確定的,這可能是什麼導致你看到PDO的錯誤。相反,你應該從$_GET全局變量檢索值:使用GET協議正在發送

$Name = $_GET['Name']; 
$Last = $_GET['Last']; 
$email = $_GET['email']; 
$pwd = $_GET['pwd']; 
$userID = $_GET['userID']; 
+0

非常感謝。我試過$ _GET,它的工作原理。我已經去了$ _REQUEST而不是$ _GET。 – user3079872