Datetime ŞİMDİ PHP mysql (+ PDO varyant)

6 Cevap php

Seyir için teşekkürler. Tüm yararlı cevaplar / yorumlar kadar oy vardır.

Php, böyle NOW () kullanabilirsiniz:

mysql_query("INSERT INTO tablename (id,      value,      time_created) 
                            VALUES ('{$id}', '{$value}', NOW())");

Nasıl PDO'de aynı şeyi yapabilirsiniz. Bu gibi bağladığınızda, bir hata alıyorum:

$stmt->bindParam(':time_added', NOW(), PDO::PARAM_STR);

Is it the PDO:PARAM_STR?

6 Cevap

Sadece bunu:

mysql_query("INSERT INTO tablename (id, value, time_created)  
             VALUES ('$id', '$value', NOW())");

Eğer sağ sütun-tip olmalıdır rağmen. date ya da eğer doğru geri çağırmak time yalnız, işe yaramaz; o datetime ya da belki timestamp olmak zorunda?

Ben bütünlüğü uğruna doğru cevabı ekleyeceğiz (doğru cevap Ollie Saunders's answer için yorumlarından elde edilebilir rağmen) kimse açıkça sorusunu yanıtladı çünkü.

$stmt = $pdoDb->prepare('INSERT INTO tablename (id, value, time_created) VALUES (:id, :value, NOW())');
// either bind each parameter explicitly 
$stmt->bindParam(':id', $id); // PDOStatement::bindValue() is also possibly
$stmt->bindParam(':value', $value);
$stmt->execute();
// or bind when executing the statement
$stmt->execute(array(
    ':id'    => $id,
    ':value' => $value
));

Lütfen PDO bildirimde varsayarsak böyle bir şey yapabileceğini doğrudur:

$date = date('Y-m-d H:i:s');
$stmt->bindParam(':time_added', $date, PDO::PARAM_STR);

Onu görmek gibi cevapların hiçbiri sorusunu çözmek!

So there are some of my findings: there is NO WAY how to force PDO to pass MySQL function call as a query value - so there is no way to do simple wrapper that will be able to use NOW() or any other function as passed values. Every time you need something like that, you need manually change the query, so the function call is part of the query string. :-(

Ben kullanıyorum MySQL işlevi için verilen değerler testleri ve sorguyu kendisi değiştirir, ama bence iyi bir çözüm değildir işlevini kullanarak ediyorum ...: -}

ŞİMDİ dışındaki () i de "zaman damgası" türü sütun kullanmak ve current_timestamp onun varsayılan ayarlayın .. yani ben sadece o alan için bir şey geçmek ve zaman otomatik olarak ayarlanır. belki tam olarak ne ur arıyor.

Bu, bazıları, belki yararlı olabilir. Ollie Saunders olduğu gibi aynı sorunu ile karşı karşıya kalmıştır. Ben PHP / MySQL için oldukça yeni ve tüm PDO çoğu. Ben aşağıdaki ile sorunu çözmek mümkün oldu:

$active = 0;      
$id = NULL;
$query = "INSERT 
        INTO tbl_user(ID_user, firstname, lastname, email, password, active, create_date)
        VALUES (?,?,?,?,?,?,NOW())";

if($stmt=$this->conn->prepare($query)) {
$stmt->bind_param('issssi', $id, $firstname, $lastname, $email, $password, $active);
$stmt->execute();
}

ve ne çalışıyor sanırım! Burada yardımcı olmuştur umuyoruz. Herhangi bir yorum bekliyoruz. Deneyin ve sizin için çalıştı eğer söyle, ya da herhangi eklemeler varsa.