MySQL PHP - 正斜杠后缺少字符

时间:2012-06-19 07:45:50

标签: php android mysql insert mysql-real-escape-string

我有一个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”。任何想法或帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

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

  

在数据库表上,这两个字段可能更短吗?

答案 1 :(得分:0)

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

E.g。你的N / A长度为3,因此你的字段必须至少为3。