2012-02-29 13 views
6

muszę wykonać to zapytanie mysql w MySQLi PDO z wiązania parametr w PHP:Jak wstawić rekord z funkcją MySQL NOW() w MySQLi za pomocą bind_param?

mysql_query("INSERT INTO `posts` (post_name,publish_date) VALUES ($post_name,NOW()) ") 

używam skrypt tak, ale nie wkładać PUBLISH_DATE poprawnie.

$publish_date = 'NOW()'; 
$insert = $mysqli->prepare("INSERT INTO posts (post_name,publish_date) VALUES (?,?)"); 
$insert->bind_param("ss", $post_name $publish_date); 
$insert->execute(); 

on wstawia rekord do kolumny publish_date jak ten: 0000-00-00 00:00:00

Jak mogę to zrobić? Z góry dziękuję.

P.S: Typ kolumny daty to datatime.

Odpowiedz

25

To nie jest parametr zapytania, ponieważ nie trzeba podawać wartości do MySQL.

$insert = $mysqli->prepare("INSERT INTO posts (post_name, publish_date) VALUES (?, NOW())"); 
+2

Dodatkowo: Powodem są kończąc '0000-00-00 00: 00: 00' włożona czy to ty próbują wstawić łańcuch ''NOW()'' zamiast rozpoznawalnej wartości datetime. MySQL zmusza łańcuch do wartości datetime, a wybraną wartością jest data zero. – Hammerite

+0

Ale ... i zmienna w bind_param poda "NOW()" w bind_param? –

+0

@Pedro, nie rozumiem twojego pytania. – Hammerite

2

Prawdopodobnie powinieneś spróbować użyć funkcji data nie NOW()

$publish_date =date("Y-m-d H:i:s"); 
$insert = $mysqli->prepare("INSERT INTO posts (post_name,publish_date) VALUES (?,?)"); 
$insert->bind_param("ss", $post_name $publish_date); 
$insert->execute(); 
+1

Problem z tym rozwiązaniem polega na tym, że jeśli baza danych i php nie działają na tym samym serwerze, zegary mogą nie być zsynchronizowane. Oznacza to, że TERAZ() (który zabiera czas z serwera bazy danych) i data (która zabiera czas z serwera php/webserver) nie są takie same. Z powodu tego problemu napotkałem kilka problemów. Rozwiązaniem byłoby synchronizacja s cały czas za pomocą ntp. – theomega

+0

@theomega nie widziała tego, jeśli baza danych i serwer php/web były na różnych serwerach przy użyciu skryptu synchronizacji czasu ntp rozwiąże problem – smilezjim

Powiązane problemy