Nasıl PHP kullanarak bir MySQL veritabanı bir tarih saklayabilirsiniz?

5 Cevap php

Ben bir MySQL veritabanında bir tarih değeri saklamak istiyorum.

d, m, y, burada d = (1 ... 31): I A.php bu 3 girişi vardır denilen bir PHP sayfası var , m =(1 ... 12) ve y = (1970 to 2009).

Şimdi b.php Ben bu değerleri toplamak ve benim db saklamak gerekir.

Benim DB tarih türü olan dob adında bir alan vardır.

Nasıl d, m, y adlı tip tarihi bir değişken oluşturmak ve DB saklayabilirsiniz?

5 Cevap

mysql tarih alanları 'yyyy-aa-gg' öylesine gibi saklamak biçimini alır, ama tire dahil, PHP bir dize olarak geçmektedir.

Sadece bunu bir dize iletebilirsiniz:

$sql = 'insert into tbl (dob) values 
        (\'' . $month . '/' . $day . '/' . $year . '\')';

MySQL sizin için doğru dönüşüm yapacağız, bu yüzden bile bu konuda endişelenmenize gerek yok.

Eğer tüm değişkenler SQL enjeksiyonu önlemek için mysql_real_escape_string yaptık emin olun.

Tipi tarihten bir değişken oluşturmak için, mktime () işlevini kullanın:

$date = mktime(0, 0, 0, $month, $day, $year);

Sizin veritabanındaki $ tarihini saklamak bir dizeye tarihi dönüştürmek için:

$sql = "INSERT INTO table (dob) VALUES ('" . date('Y-m-d', $date) . "')";

Alternatif olarak, mysqli kullanarak:

$query = $db->prepare('INSERT INTO table (dob) VALUES (FROM_UNIXTIME(?))');
$query->bind_param('i', $date);
$query->Execute();

Bu kullanarak crossplatform beri sadece db UNIX zaman damgası olarak saklamak için en iyisi

mktime()

Eğer db çağırın Sonra, kullanımı

date()

Eğer istersen biçimine dönüştürmek için (örneğin, 31 Ekim 2009, 10/31/2009, vb)

çok uzun. sadece yapmak:

$dt = sprintf("%'04s-%'02s-%'02s",$y,$m,$d);
mysql_query("insert into mytable (dob) values ('$dt')");