0

日付で並べ替えようとしていますが、常に列「date」を作成し、それにNOT NULLを追加すると、日付の代わりに「0000-00-00」がエコーされます。

そして、SQLを変更しました

記事を読んだ後

CREATE TABLE `driptone`.`announces` (
`announcements`       text,
`updated_at`          TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`created_at`          DATETIME DEFAULT NULL,
PRIMARY KEY (created_at)
);

でも今提出すると

MySQLの問題:列数が行1の値数と一致しません

私は何を間違えましたか?

//error_reporting(0);
$announcements = $_POST['announcement'];    
if (!empty($announcements)) {
    if (strlen($announcements) > 10) {
        $date = date("Y/m/d");
        $sql="INSERT INTO announcements (message, date_time) VALUES ('$announcements,$date')";
        if (!mysql_query($sql))
        die('MySQL problem:'.mysql_error());
    } else {
    echo 'Need to be atleast 10 characters long';
    }
} else {
echo 'Fields are empty';
}
$queryPerson = mysql_query("SELECT * FROM announces ORDER BY created_at DESC") or die(mysql_error());
while($row = mysql_fetch_assoc($queryPerson) ) {
 echo $row['announcements'] . ' ' . $row['created_at'] . '<br /><br /><br />';
}
4

4 に答える 4

0

これVALUES ('$announcements,$date')は、1つの文字列と見なされるためです。

次のように書き直しますVALUES ('$announcements', '$date')

また、mysqlドライバーは非常に古いため、PDOに切り替えることをお勧めします。あなたのコードは非常に危険です。

于 2013-02-20T00:07:08.277 に答える
0

まず、created_atの日付で並べ替える場合は、その列にインデックスが必要です。

次に、という名前の列に挿入しようとしているため、テーブル構造にとという名前のこれらのフィールドがある場合に、そのエラーがmessage発生date_timeannouncementsますcreated_at。正しい列名を使用する必要があります。

第3に、値のグループ全体ではなく、挿入しようとしている各値を一重引用符で囲む必要があります。

于 2013-02-20T00:07:45.957 に答える
0
$sql="INSERT INTO announcements (message, date_time) VALUES ('$announcements,$date')";

値は引用符で区切る必要があります。1 つの引用符で囲むことはできません

VALUES ('$announcements','$date')";

また、コードでテーブル名と列名が正しくありません。


また、created_at フィールドの主キーを取得します。

于 2013-02-20T00:06:16.673 に答える
0

である'$announcements,$date'必要があります'$announcements','$date'

ただし、 の準備済みステートメントを使用してくださいmysqli

于 2013-02-20T00:06:22.563 に答える