Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将PHP数组插入MYSQL_Php_Mysql_Arrays_Json_Ajax - Fatal编程技术网

将PHP数组插入MYSQL

将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]; ..............................

我有一个html表,它被转换成JSON并通过AJAX发送到PHP。 我已经解码了JSON对象,现在有了一个PHP数组。 我想将这个数组或者说它的内容插入MySQL数据库

我对一些方法感到困惑。 防止SQL注入的理想方法是什么? 我看到了很多这样的方法

 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”]
是一样的