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

如何将PHP数组中的值插入MySQL表?,php,mysql,arrays,mysqli,Php,Mysql,Arrays,Mysqli,我正在创建一个注册表,其中包含姓名、电子邮件和电话号码字段。为了检查用户输入的有效性,我有一个函数validate_input(),它返回一个数组$arr,其中包含用户输入的输入(如果用户输入有效)$arr然后被传递到一个单独的函数,该函数将arr中的值插入一个MySQL表user,该表包含name、email和phone的字段 我最初尝试了以下方法: $insert_query = "INSERT INTO user (name, email, phone)

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

我最初尝试了以下方法:

$insert_query = "INSERT INTO user (name, email, phone)
                 VALUES ('$arr['name']',
                         '$arr['email']',
                         '$arr['phone']')";
$run_insert_query = mysqli_query($con, $insert_query);
但这不起作用。一些阅读表明,这是将数组值插入数据库的错误方法。因此,我尝试了以下方法():


但这也不起作用。关于如何实现这一点有什么想法吗?

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

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

假设您的validate_input()函数也对数据调用mysql[i]\u real\u escape_string(),以防止sql注入(也是糟糕的编程实践-您应该验证输入和escape输出)然后,您只需要在第一个查询中修复代码的语义:当关联数组索引已经包含在“…”中时,不应引用它们:


你只是忘了正确设置引号。 以下是正确的语法:

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

这两种方法都是有效的,两种情况都有语法errors@rtfm你能用正确的语法给出一个答案吗?最好还是用引号来表示数组键阅读“array do's and don's¨”@symcbean谢谢。你能解释一下你在回答中所说的“转义输出”是什么意思吗?如果我问任何noob问题,请耐心听我说——我对web开发人员来说是个新手。@rtfm:我已经读过了——我建议你也花点时间读一下。并理解它告诉您的内容。@rtfm:继续阅读:
echo“Bad:{$array['$i']}\n”;echo“Good:{$array[$i]}\n”
$insert_query = "INSERT INTO user 
 (name, email, phone)  
 VALUES ('$arr[name]', '$arr[email]', '$arr[phone]')";
$run_insert_query = mysqli_query($con, $insert_query);
$insert_query = "INSERT INTO user (name, email, phone) 
                 VALUES ('".$arr['name']."',
                         '".$arr['email']."', 
                         '".$arr['phone']."')";