如何将多个变量插入到SQL查询中

时间:2012-03-31 18:28:06

标签: php sql statements

<?php
  session_start();
  include('function.php');

  site::db();
  $type=$_GET['type'];
  $date=$_GET['date'];
  $amount=$_GET['amount'];

  switch($type) {
    case "in_park":
      $table = "lot_income";
      $col = "date,amount";
      $val = $date $type $amount;
      break;
  }

  $sql = mysql_query("INSERT INTO $table ($col) VALUES ('$val')");
  if(!$sql) {
    die(mysql_error());
  } 

  //header("LOCATION: dashboard.php")
?>

这不会起作用,但我假设我将需要爆炸变量val但是如何将逗号放在那里我所以我可以将信息放在除了一个字段之外的许多不同字段中。

3 个答案:

答案 0 :(得分:1)

改变这个..

$val=$date $type $amount;

进入这个

$val= "'$date', '$amount'";

和thius

$sql=mysql_query("INSERT INTO $table ($col) VALUES ('$val')");

进入这个

$sql=mysql_query("INSERT INTO $table ($col) VALUES ($val)");

答案 1 :(得分:1)

我认为你在SQL语句中缺少一个列:

$col = "date, type, amount";

您需要相应地格式化SQL值:

$val = "'$date', '$type', '$amount'";

连接它们:

$sql = mysql_query("INSERT INTO $table ($col) VALUES ($val)");

答案 2 :(得分:1)

我通常会这样做:

$table = "lot_income";

$data = array(
    'date' => "'".mysql_real_escape_string($date)."'", // date
    'type' => intval($type), // integer
    'amount' => intval($amount), // integer
    'text' => "'".mysql_real_escape_string($sometext)."'" // string
    // etc
  );

// I tend to wrap the following statement in a function for code reuse

$resource = mysql_query(
    "INSERT INTO ".$table." (".implode(", ", array_keys($data).")"
    . "VALUES (".implode(", ", array_values($data).")"
   );

注意:对于值转义(为了避免SQL注入),使用PHP扩展PDO mysqli 绑定变量会更容易/更安全。