Php 将数据发布到mysql数据库
我正试图将数据以JSON的形式从android发送到PHP,以便对其进行解析并保存在MySQL数据库中 这是PHP代码的一部分Php 将数据发布到mysql数据库,php,android,mysql,sql,Php,Android,Mysql,Sql,我正试图将数据以JSON的形式从android发送到PHP,以便对其进行解析并保存在MySQL数据库中 这是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_
$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):错误:您的SQL语法有错误;在第4行的“['26']、['1']、['1']、['1']、['1']、['1']、['1']、['0']、['1'])附近,查看与MySQL服务器版本对应的手册,以了解要使用的正确语法
正如您从错误中所看到的,我有变量的值,所以它们中的任何一个都是空值
问题是我应该更改或添加什么到我的sql语法来修复此错误?不要将sql语句中的参数用方括号括起来(例如:
['$Order\u ID']
)
我经常发现echo
或error\u log
创建的SQL语句并尝试在SQL工具中运行它很有帮助。这将为您提供更好的错误消息,并显示语法错误(如果工具具有语法突出显示)
另外,看看php.net是怎么说的。这种类型的SQL语句容易受到SQL注入攻击,而SQL注入攻击是攻击系统的最常见方式之一。删除
['$Order\u ID']
和其他括号
对于您的值
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;
}
当您在要插入到DB中的数据周围使用单引号“”时,您会告诉PHP该数据是字符串类型的,并且您的数据库可能需要整数数据 您是否尝试过在
值中不使用括号“$Order\u ID”
而不是[“$Order\u ID”],
等?请学习使用。你的代码容易受到SQL注入的攻击。这是非常感谢的,如果你把你的评论作为一个答案发布,那么我可以为你接受它,THNX@Fred ii-