2015-06-03 38 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