Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Chuẩn bị câu lệnh MySQL INSERT / UPDATE với các giá trị DEFAULT

"Cách giải quyết" duy nhất mà tôi biết cho điều này là sử dụng Coalesce () Mặc định (tên trường)

Ví dụ:

$pdo = new PDO("mysql:host=localhost;dbname=test", 'localonly', 'localonly'); 
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$pdo->exec("
  CREATE TEMPORARY TABLE foo (
    id int auto_increment,
    x int NOT NULL DEFAULT 99,
    y DATETIME NOT NULL DEFAULT '2010-03-17 01:00:00',
    z varchar(64) NOT NULL DEFAULT 'abc',
    primary key(id)
  )
");


$stmt = $pdo->prepare('
  INSERT INTO
    foo
    (x,y,z)
  VALUES
    (
      Coalesce(:x, Default(x)),
      Coalesce(:y, Default(y)),
      Coalesce(:z, Default(z))
    )
');
$stmt->bindParam(':x', $x);
$stmt->bindParam(':y', $y);
$stmt->bindParam(':z', $z);


$testdata = array(
  array(null, null, null),
  array(1, null, 'lalala'),
  array(null, '2009-12-24 18:00:00', null)
);
foreach($testdata as $row) {
  list($x,$y,$z) = $row;
  $stmt->execute();
}
unset($stmt);
foreach( $pdo->query('SELECT id,x,y,z FROM foo', PDO::FETCH_NUM) as $row) {
  echo join(', ', $row), "\n";
}

bản in

1, 99, 2010-03-17 01:00:00, abc
2, 1, 2010-03-17 01:00:00, lalala
3, 99, 2009-12-24 18:00:00, abc


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ghi đè tên bảng trong Flask-Alchemy

  2. Sự cố lập chỉ mục FULLTEXT của MySQL

  3. Mệnh đề WHERE phức tạp sử dụng ORM của PHP Doctrine

  4. Làm cách nào để tôi có thể viết lại truy vấn này để tránh lỗi:Bạn không thể chỉ định bảng đích để cập nhật trong mệnh đề FROM

  5. làm thế nào để chèn các giá trị bằng dấu phẩy? trong câu lệnh switch