Как вставить несколько переменных в запрос SQL - PullRequest
1 голос
/ 31 марта 2012
<?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 ]

1 голос
/ 31 марта 2012

Я думаю, что в вашем операторе SQL отсутствует столбец:

$col = "date, type, amount";

Вам необходимо соответствующим образом отформатировать значения SQL:

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

Объединить их:

$sql = mysql_query("INSERT INTO $table ($col) VALUES ($val)");
1 голос
/ 31 марта 2012

Я обычно делаю:

$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 .

1 голос
/ 31 марта 2012

Измените это ..

$val=$date $type $amount;

На это

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

И вот это

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

на это

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