如何将 PHP 数组中的值插入 MySQL 表?

Posted

技术标签:

【中文标题】如何将 PHP 数组中的值插入 MySQL 表?【英文标题】:How to insert values in a PHP array to a MySQL table? 【发布时间】:2017-12-07 05:53:41 【问题描述】:

我正在创建一个注册表单,其中包含姓名、电子邮件和电话号码字段。为了检查用户输入的有效性,我有一个函数validate_input(),它返回一个数组$arr,其中包含用户输入的输入(如果用户输入有效)。然后将$arr 传递给一个单独的函数,该函数将arr 中的值插入到mysqluser 中,其中包含nameemailphone 的字段。

我最初尝试了以下方法:

$insert_query = "INSERT INTO user (name, email, phone)
                 VALUES ('$arr['name']',
                         '$arr['email']',
                         '$arr['phone']')";
$run_insert_query = mysqli_query($con, $insert_query);

但这没有用。一些阅读表明这是将数组值插入数据库的错误方法。于是我又尝试了以下方法(based on the accepted answer here):

$escaped_values = array_map('mysql_real_escape_string', array_values($arr));
$arr_values  = implode(",", $escaped_values);

$insert_query = "INSERT INTO user (name, email, phone) VALUES ($arr_values)";
$run_query = mysqli_query($con, $insert_query);

但这也不起作用。关于如何完成这项工作的任何想法?

【问题讨论】:

两种方法都有效,两种情况都只是语法错误 @rtfm 你能用正确的语法发布答案吗? 【参考方案1】:

您只是忘记正确设置引号。 这是正确的语法:

$insert_query = "INSERT INTO user (name, email, phone) 
                 VALUES ('".$arr['name']."',
                         '".$arr['email']."', 
                         '".$arr['phone']."')";

【讨论】:

【参考方案2】:

在您的 insert dml 语句中,字符串和 格式化 日期必须用单引号引起来。由于 mysql 会尝试将字符串动态转换为整数或浮点数,因此您可以 try 引用所有内容 - 但即使它可以正常工作,这也会在您最不期望的时候咬住您。您的第二个代码块也取决于以您期望的顺序呈现的数据。通常这不太可能改变,但它是糟糕的编程。

您不能混合使用 mysqli_ 和 mysql_ 函数。阅读 php 告诉你的错误和警告。

假设您的 validate_input() 函数还在数据上调用 mysql[i]_real_escape_string() 以防止 sql 注入(也是不好的编程习惯 - 您应该验证输入和转义输出),那么您只需要修复您的语义第一个查询中的代码:当关联数组索引已经包含在“....”中时,不应引用它们:

$insert_query = "INSERT INTO user 
 (name, email, phone)  
 VALUES ('$arr[name]', '$arr[email]', '$arr[phone]')";
$run_insert_query = mysqli_query($con, $insert_query);

【讨论】:

最好还是为数组键使用引号 php.net/manual/en/language.types.array.php 阅读“数组注意事项¶”部分 @symcbean 谢谢。您能否解释一下答案中“转义输出”的含义?如果我问任何菜鸟问题,请多多包涵 - 我对网络开发很陌生。 @rtfm:我已经读过了——我建议你也花点时间读一读。并了解它在告诉你什么。 @rtfm:继续阅读:echo "Bad: $array['$i']\n"; echo "Good: $array[$i]\n";

以上是关于如何将 PHP 数组中的值插入 MySQL 表?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用PHP Wordpress将沙箱Paypal返回值插入MySQL表?

PHP 数组作为单独的行插入 MySQL 表

如何使用 PHP Wordpress 将沙箱 Paypal 返回值插入 MySQL 表?

将表单中的值插入数组,然后插入数据库

PHP PHP:使用数组将数据插入MySQL表[mysql] [php] [array] [INSERT]

PHP:使用数组[MySQL][PHP][Array][Insert]将数据插入MySQL表