2013-12-15 121 views
0

我'尝试从Android作为JSON发送数据,以分析它,并保存在MySQL数据库数据发布到MySQL数据库

到PHP这是PHP代码

$JsonString = $_POST["DATA"]; 
$JsonData = json_decode($JsonString, TRUE); 

$Add_First_Only = 0; 
foreach ($JsonData['items'] as $item) 
{ 
    $Order_ID = $item['Order_ID']; 
    $Order_Row_Number = $item['Order_Row_Number']; 
    $Order_Item_ID = $item['Order_Item_ID']; 
    $Order_Course_ID = $item['Order_Course_ID']; 
    $Order_Seat_No = $item['Order_Seat_No']; 
    $Order_Row_Value_wo_Options = $item['Order_Row_Value_wo_Options']; 
    $Order_Row_Value_with_options = $item['Order_Row_Value_with_options']; 

if ($Add_First_Only == 0) 
{ 
    $result = mysqli_query($con, 
    "INSERT INTO order_items (Order_ID,Order_Row_Number,Order_Item_ID,Order_Course_ID,Order_Seat_No,Order_Row_Value_wo_Options, Order_Row_Value_with_options) 
    VALUES 
    (['$Order_ID'],['$Order_Row_Number'],['$Order_Item_ID'],['$Order_Course_ID'], 
     ['$Order_Seat_No'],['$Order_Row_Value_wo_Options'],['$Order_Row_Value_with_options'])" 
    ); 
    $Add_First_Only = 1; 
} 
} 

的一部分这是错误我得到了Eclipse的logcat

12-16 02:00:01.800: V/TAG(1841): Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '['26'],['1'],['1'],['1'],['1'],['0'],['1'])' at line 4

你可以从错误中看到它的自我,我有变量的值,以便它们不为空值

问题是我应该更改或添加到我的SQL语法来解决此错误?

+1

您是否在'VALUES'中尝试了括号''$ Order_ID','而不是'['$ Order_ID']'等内容? –

+0

请学习使用[**准备的语句**](https://www.youtube.com/watch?v=nLinqtCfhKY)。您的代码容易受到SQL注入的影响。 –

+1

这是非常感谢,如果您发表您的评论作为答案,所以我可以为你接受,THNX @ Fred-ii- –

回答

1

删除周围['$Order_ID']的支架和其他

使用'$Order_ID'代替['$Order_ID']等你VALUES

if ($Add_First_Only == 0) 
{ 
    $result = mysqli_query($con, 
    "INSERT INTO order_items (Order_ID,Order_Row_Number,Order_Item_ID,Order_Course_ID,Order_Seat_No,Order_Row_Value_wo_Options, Order_Row_Value_with_options) 
    VALUES 
    ('$Order_ID','$Order_Row_Number','$Order_Item_ID','$Order_Course_ID', 
     '$Order_Seat_No','$Order_Row_Value_wo_Options','$Order_Row_Value_with_options')" 
    ); 
    $Add_First_Only = 1; 
} 
1

请勿将参数放在带有方括号的SQL状态框中(例如:['$Order_ID'])。

我经常发现它有助于echoerror_log创建的SQL语句,并尝试在SQL工具中运行它。这应该会给你更好的错误信息,并显示语法错误(如果该工具具有语法高亮显示)。

另外,看看php.net不得不说的关于prepared statements。这种类型的SQL语句容易受到SQL注入攻击的攻击,这是攻击系统的最常见方式之一。

0

当您使用单引号'周围的数据要插入到数据库您告诉PHP这个数据是字符串类型的,你的数据库可能期望INTEGER数据。