【问题标题】:How to insert an array into mysql database?如何将数组插入mysql数据库?
【发布时间】:2016-11-29 08:46:03
【问题描述】:

我有以下数组:

$dati = array(
    "data" => array(
        'address_complete'=>$data->results[0]->formatted_address, 
        'address_square'=>$data->results[0]->address_components[1]->long_name,
        'location'=>$data->results[0]->address_components[2]->long_name,
        'postal_code'=>$data->results[0]->address_components[7]->long_name,
        'data_ora'=>$tmp_date
    )
);

我想插入$dati["data"]['location'] in database. 我该如何解决

mysql_query("INSERT into utenti(city) VALUES ('$dati[data][location]')") or die (mysql_error());

?

【问题讨论】:

  • $dati[data][location]改成$dati['data']['location']?
  • 目前发生了什么?
  • 开始使用mysqli
  • 它说:错误@Maximus2012
  • 警告:如果您只是学习 PHP,请不要使用mysql_query 接口。它是如此可怕和危险,以至于在 PHP 7 中被删除。像 PDO is not hard to learn 这样的替代品和像 PHP The Right Way 这样的指南解释了最佳实践。你的用户参数不是properly escaped,有SQL injection bugs可以被利用。

标签: php mysql arrays database


【解决方案1】:

使用类似下面的东西

mysql_query("INSERT into utenti(city) VALUES ('".$dati['data']['location']."')") or die (mysql_error());

注意: mysql_ 扩展名已弃用,请改用 MySQLi 或 PDO_MySQL。

【讨论】:

    【解决方案2】:

    首先,使用适当的变量插值:

    mysql_query("INSERT into utenti(city) VALUES ('{$dati["data"]["location"]}')") or die (mysql_error());
    

    其次mysql_ 扩展名已被弃用,请改用MySQLiPDO_MySQL

    【讨论】:

    • 关于 SQL 注入或不推荐使用的 mysql_* 扩展的任何 cmets ?
    • @devlincarnate,看看我的 cmets
    • 使用{} 包围数组需要在数组键上使用引号,否则会收到未定义常量警告。
    • @MarcB,当然,我错过了在深夜写的那件事。谢谢提示
    【解决方案3】:

    PHP 的解析器不是贪婪的,双引号字符串中的多维数组将无法正确解析。例如

    $arr['a']['b'] = 'c';
    echo "$arr[a][b]"; 
    

    将打印Array[b],而不是您期望的c,因为PHP 在第一个[] 键之后停止解析数组。

    您必须使用{} 扩展符号:

    echo "{$arr['a']['b']}"; // prints c as expected
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-17
      • 2014-04-26
      • 2015-06-18
      • 2011-07-05
      • 2011-08-06
      • 2011-10-25
      • 2014-07-21
      相关资源
      最近更新 更多