1
<?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 を分解する必要があると想定していますが、そこにカンマを入れる方法もあると思います。これにより、1 つのフィールドだけでなく、さまざまなフィールドに情報を入れることができます。

4

3 に答える 3

1

SQL ステートメントに列がないと思います:

$col = "date, type, amount";

それに応じて SQL 値をフォーマットする必要があります。

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

それらを連結します。

$sql = mysql_query("INSERT INTO $table ($col) VALUES ($val)");
于 2012-03-31T18:42:30.517 に答える
1

これを変える..

$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)");
于 2012-03-31T18:34:50.753 に答える
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を使用して変数をバインドする方が簡単/安全です。

于 2012-03-31T18:51:39.580 に答える