0

我正在尝试将用户在我的 iphone 应用程序中输入的字符串(地址)保存到 mysql 数据库中。我正在使用 php 来完成此操作。我有几个问题。

这是我在php中的代码:

...
$guestadd1 = $_GET["guestadd1"];
$guestadd2 = $_GET["guestadd2"];
$guestcity = $_GET["guestcity"];
...

这是mysql查询:

 mysql_query( "INSERT INTO HMS_GUESTS( GUESTTYPE, GUESTLNAME, GUESTFNAME, GUESTADDRESS1,
               GUESTADDRESS2, GUESTCITY, GUESTSTATE, GUESTPOSTCODE, GUESTWORKPHONE) VALUES 
               ('$guestType', '$guestLname', '$guestFname', '$guestadd1', '$guestadd2', 
               '$guestcity', '$gueststate', '$guestpostal', '$guestWphone') ", $con) or 
               die(mysql_error());

1 但我无法插入带空格的数据。如果我尝试在没有空间的情况下保存它,我可以插入。如何插入空格?

2 我有两种类型的客人:个人客人和专业客人。因此,多个条目可以具有相同的客人类型。因此,当我尝试从一种类型中插入第二个客人时,我得到了键错误的重复值。我怎样才能克服这个并插入条目?

任何帮助表示赞赏。谢谢 :)

编辑 包括我的objective-c代码

NSString *strURL = [NSString stringWithFormat:@"http://127.0.0.1/hms.php?guesttype=%@&
guestLname=%@&guestFname=%@&guestadd1=%@&guestadd2=%@&guestcity=%@&
gueststate=%@&guestpostal=%@&guestWphone=%@", guestID, self.name1.text, self.name2.text,
self.address1.text, self.address2.text, self.city.text, self.state.text, self.postal.text,
self.phone.text, self.fax.text];
    // to execute php code
NSData *dataURL = [NSData dataWithContentsOfURL:[NSURL URLWithString:strURL]];

    // to receive the returned value
NSString *strResult = [[NSString alloc] initWithData:dataURL encoding:NSUTF8StringEncoding];

和mysql表结构:

Guest Type  | Guest First Name | Guest Last Name | ADDRESS LINE 1 | ADDRESS LINE 2 | CITY | STATE | POSTAL |  WORKPHONE
----------------------------------------------------------------------------------------------------------------------
Personal    | blah             |  blah           | blah            | blah          | blah | blah  | blah   |  blah
Professional| blah             |  blah           | blah            | blah          | blah | blah  | blah   |  blah

所以,在地址列或可能的任何地方..我会在我无法插入的参数中遇到空格。

如果我现在尝试将另一个客人添加到表中,比如输入 Personal,我会收到此错误:Duplicate entry '1-1-PERSONAL-11' for key 1

4

1 回答 1

3

请不要使用 mysql_query 函数,也不要使用字符串插值(或就此而言的连接)构造查询。这种解决方案让您对SQL 注入攻击敞开了大门。我建议使用PDO之类的东西并利用参数绑定。否则你有一个任何白痴都可以利用的重大安全漏洞。

于 2013-07-31T23:05:53.303 回答