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

时间:2017-07-03 22:08:40

标签: php mysql arrays mysqli

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

我最初尝试过以下内容:

phone

但这并没有奏效。一些读数显示这是将数组值插入数据库的错误方法。所以我接着尝试了以下(based on the accepted answer here):

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

但这也没有奏效。关于如何使这项工作的任何想法?

2 个答案:

答案 0 :(得分:1)

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

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

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

function assertEqual(actual, expected, testName) {
if(actual !== expected){
    console.error( "FAIL [" + testName + "] Expected \"" + expected + ", \" but got \"" + actual + "\"");
  } else {
    console.info( "SUCCESS [" + testName + "]");
  }
}


var numbers = [1, 3, 5];

function average(numbers) {
  // process array of numbers
  numbers.reduce(function(total, item){
    return total + item / numbers.length - 1;
  }, 0);
}

function sum(numbers) {
   numbers.reduce(function(total, item){
    return total + item;
  }, 0);
}



var avg = average(numbers);
console.log(avg);

var total = sum(numbers);
console.log(total);


assertEqual(avg, 4, 'it doubles 2 to 4');
assertEqual(sum, 4, 'it doubles 2 to 4');

答案 1 :(得分:1)

你忘了设置正确的引号。 这是正确的语法:

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