将PHP数组插入MYSQL
我有一个html表,它被转换成JSON并通过AJAX发送到PHP。 我已经解码了JSON对象,现在有了一个PHP数组。 我想将这个数组或者说它的内容插入MySQL数据库 我对一些方法感到困惑。 防止SQL注入的理想方法是什么? 我看到了很多这样的方法将PHP数组插入MYSQL,php,mysql,arrays,json,ajax,Php,Mysql,Arrays,Json,Ajax,我有一个html表,它被转换成JSON并通过AJAX发送到PHP。 我已经解码了JSON对象,现在有了一个PHP数组。 我想将这个数组或者说它的内容插入MySQL数据库 我对一些方法感到困惑。 防止SQL注入的理想方法是什么? 我看到了很多这样的方法 foreach ($array as $key => $value) { $price = $array["price"][$key]; ..............................
foreach ($array as $key => $value)
{
$price = $array["price"][$key];
...................................
}
这似乎不起作用,或者至少我无法让php打印或回显$price是什么
我试过这个:
foreach ($array as $key => $value)
{
$price = $value["price"];
...................................
}
我可以通过echo或print\r来显示值
第一个问题是:$key在这里插入这些值到MySQ的目的是什么?
第二个问题是:为什么第一个不返回预期的结果,就像第二个代码段一样?echo应该显示$price的值吗?
最后,假设这两种方法都有效,下面这样的insert语句是否正确,可以将数据推送到MySQL中
$sql = mysql_query("insert into Daily_Requests values ('','$price','$item','$etc...','$etc....')");
问候
编辑
这是我的JSON:
[{"Price":"5000","Manufacturer":"Newton","Model":"84x26x10 43u","Model_info":"Newton 84x26x10 43u","Type":"Rack","Height_in":"83.97637795","Height_mm":"2133","Width_in":"25.98425197","Width_mm":"660","Description":"Newton 84x26x10 43u","Depth_in":"10","Depth_mm":"254","Mount_Type":"Floor Mount","Rack_UNITS":"43","Rack_INSIDE_HEIGHT_mm":"1911","Rack_INSIDE_WIDTH_mm":"584","Rack_INSIDE_DEPTH_mm":"","ASSET_TYPE":"Rack","Phases":"","Status":"","Date":"2017-01-11","Submitted":"","Image File / Web Info":"","Site":"Orlando"}]
一旦你进入循环
foreach ($array as $key => $value) {
#loop entered here after open
#each value of the array is accessible
#end loop here before close
}
$key
作为整数作为数组的索引值,而$value
作为保存该索引值的实际变量$array
循环内部与循环外部相同$value
表示该数组的切片
一旦您将数据加载到一个新变量中,作为$price=$value[“price”]
,它将一直可用,直到循环结束,并在再次循环时重置为新值
因此,循环外的SQL语句将包含
$array。如果您对如何访问或循环数组元素有疑问,请使用
var\u dump
可视化其结构
我看到你有一个对象数组,我知道每个对象都是一行。因此:
foreach($array as $object) {
//Here you have each object in $object
//$object is {"Price":"5000","Manufacturer":"Newton",...}
//Lets build the query to insert this row. I'm gonna do this with a query string as you're already using mysql_query, but as suggested you should migrate to PDO.
$query='';
foreach($object as $key=>$value) {
//To answer your $key question, here $key are Price, Manufacturer, Model, etc and $value are the correspondig values for each key
if($query) $query.=','; //add the comma if it's not the fist var
$query.='`'.mysql_real_escape_string($key).'`=\' '.mysql_real_escape_string($value).'\'';
}
$query='insert into Daily_Requests set '.$query;
mysql_query($query);
}
警告:如果你只是在学习PHP,请不要学习过时的界面。这很糟糕,已经在PHP7中删除了。替换类和指南类有助于解释最佳实践。请确保您的用户参数正确无误,否则将导致严重后果。提示:正确的方法是使用带有占位符值的准备语句。请添加您正在讨论的JSON结构。那么就更清楚了。$key在这里插入这些值到MySQ的目的是什么?-->这只是数组的键,请尝试先打印($array),然后查看数组。基本上,我是说,
$price=$value[“price”]
就像在中访问($key=0;$key
--如果键确实是整数。过程将取决于JSON结构。请提供一个JSON数据的例子。我认为这是有意义的$键只是当前访问的数组切片的“动态索引”?而$value是特定$key的文本值。一旦循环结束,$键就改变了,$值也随之改变。所以当我尝试回显$price时,我不是在访问值,而是访问数组的那一部分<代码>$price=$array[“price”][$key]代码>因此,我应该像您那样通过以下方式访问它:$price=$value[“price”]
?声明$price=$value[“price”]
您已经加载了$price
,其值由$value[“price”]
持有。因此,只回显$price
与回显$value[“price”]
是一样的