1

我有一个 php 脚本,可将 Android 应用程序中的数据插入 MySQL 数据库。一些提交的值在提交时设置为“N/A”文本。我已经确认从 Android 设备发送的值确实是“N/A”。除了两个字段/列之外,所有“N/A”文本值都正确保存到我的 MySQL 数据库中。这些值在这两个字段/列中显示为“N/”,而不是“N/A”。我在输入的数据上使用 mysql_real_escape_string() 。

数据作为 JSON 对象字符串发送到 PHP 脚本:

$q = json_decode(stripslashes($_POST['questionnaire']), true);

这是 php 脚本的一部分,其中值被插入 MySQL DB。q3_7 和 q4_3 处的值从“N/A”截断为“N/”:

$query_insert = "INSERT INTO people (q_id, first_name, surname, gender, age, race, q2_7, q2_8, q2_9, q2_10, q2_11, q2_11_1, q3_1, q3_2, q3_3, q3_4, q3_5, 
                q3_6, q3_7, q3_8, q3_9, q3_10, q3_11_1, q3_11_2, q3_11_3, q3_12, q3_13, q4_1, q4_2, q4_3, q4_4, q4_5, q5_1, q5_2, q5_3) VALUES";
$values = "";
$count = 0;
foreach ($q[people] as $entry) {
    $values .= "('".mysql_real_escape_string($q[qID])."', '".mysql_real_escape_string($entry[firstName])."', '".mysql_real_escape_string($entry[surname])."',
                '".mysql_real_escape_string($entry[gender])."', '".mysql_real_escape_string($entry[age])."', '".mysql_real_escape_string($entry[race])."',
                '".mysql_real_escape_string($entry[q2_7])."', '".mysql_real_escape_string($entry[q2_8])."', '".mysql_real_escape_string($entry[q2_9])."',
                '".mysql_real_escape_string($entry[q2_10])."', '".mysql_real_escape_string($entry[q2_11])."', '".mysql_real_escape_string($entry[q2_11_1])."', 
                '".mysql_real_escape_string($entry[q3_1])."', '".mysql_real_escape_string($entry[q3_2])."', '".mysql_real_escape_string($entry[q3_3])."', 
                '".mysql_real_escape_string($entry[q3_4])."', '".mysql_real_escape_string($entry[q3_5])."', $first_map_insert_id + $count*2, 
                '".mysql_real_escape_string($entry[q3_7])."', '".mysql_real_escape_string($entry[q3_8])."', '".mysql_real_escape_string($entry[q3_9])."', 
                '".mysql_real_escape_string($entry[q3_10])."', '".mysql_real_escape_string($entry[q3_11_1])."', '".mysql_real_escape_string($entry[q3_11_2])."', 
                '".mysql_real_escape_string($entry[q3_11_3])."', '".mysql_real_escape_string($entry[q3_12])."', '".mysql_real_escape_string($entry[q3_13])."', 
                '".mysql_real_escape_string($entry[q4_1])."', $first_map_insert_id + $count*2 + 1, '".mysql_real_escape_string($entry[q4_3])."', 
                '".mysql_real_escape_string($entry[q4_4])."', '".mysql_real_escape_string($entry[q4_5])."', '".mysql_real_escape_string($entry[q5_1])."', 
                '".mysql_real_escape_string($entry[q5_2])."', '".mysql_real_escape_string($entry[q5_3])."'),";
    $count++;
}
$query_insert = $query_insert . substr($values, 0, -1) . ";";
$result = mysql_query($query_insert) or errorReport("Error in query: $query_insert. ".mysql_error());

如前所述,“N/A”文本值仅在两个字段中被截断为“N/”。其他字段的其余值正确保存为“N/A”。任何想法或帮助将不胜感激。

4

2 回答 2

1

输入长度不得超过数据库表列长度。

也许这两个字段更短,在数据库表上?

于 2012-06-19T08:01:07.883 回答
0

我能想到的唯一方法是该列/字段的长度很短,这会导致截断。

例如,您的 N/A 长度为 3,因此您的字段长度必须至少为 3。

于 2012-06-19T07:55:54.280 回答