Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

डिफ़ॉल्ट मानों के साथ एक MySQL INSERT/UPDATE कथन तैयार करना

इसके लिए मुझे पता है कि एकमात्र "वर्कअराउंड" कोलेस () और Default(fieldname)

उदा.

$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";
}

प्रिंट

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. MySQL डेटा के साथ अनंत स्क्रॉल

  2. mysql अब उसी के साथ कई कॉलम अपडेट करें ()

  3. mysql DATETIME कॉलम को युग सेकंड में बदलें

  4. MySQL में टिनींट, स्मॉलिंट, मीडियमिंट, बिगिंट और इंट में क्या अंतर है?

  5. नोड.जेएस का उपयोग करके mysql डेटाबेस तक पहुँचने में सहायता चाहिए