0

これを機能させるのに問題があります。私はこのサイトを検索し、これに関する他の多くの投稿を見つけましたが、どれも機能していないようです.

これが私の簡単なコードです:

if (isset($_POST['submit']))
{
$startDate = strtotime($_POST['from']);
$endDate = strtotime($_POST['to']);

for($i = $startDate; $i <= $endDate; $i = strtotime('+1 day', $i))
{
$date = date('Y-m-d',$i);
//echo $date . "<br>";
$sql = ("INSERT INTO `calendar` (`Cal_Date`) VALUES (`$date`)");
}
   if(!$result = $db->query($sql))
   {
   die('There was an error running the query [' . $db->error . ']');
   }

}

フォームはシンプルで、日付は「YYYY-MM-DD」形式で入力されます。私がやろうとしているのは、データベース テーブルに日付の範囲を設定することです。発生する唯一のことは、1行が挿入され、それが「0000-00-00」であることです。これは、その列がNullではなくDateに設定されているためだと思われます。結果をエコーすると、すべてが完全に機能します。データベースに取得するだけではうまくいかないようです。私は次のようなINSERTラインの他の多くの組み合わせを試しました:

$sql = $db->query("INSERT INTO `calendar` (`Cal_Date`) VALUES (`$date`)");

($db は db_connect.php からのものです)

$sql = ("INSERT INTO `calendar` (`Cal_Date`) VALUES (`{$date}`)");

$sql = ("INSERT INTO calendar ('Cal_Date') VALUES ($date)");

$sql = ("INSERT INTO `calendar` (`Cal_Date`) VALUES (`$date`)");

...そして、他にもいくつかあると思います。私が持っているように、私のdb_connect.phpがデータベースに接続していることは知っています:

$sql = ("SELECT * FROM calendar");

ページのさらに下にあり、正常に機能しています。私はこれにあまりにも長い間取り組んできましたが、明らかな何かが欠けているだけだと確信しています。フィードバックをいただければ幸いです。

mySQL 5.5.24 PHP 5.3.13 アパッチ 2.2.22

4

3 に答える 3

2

次のように、値に ` を付けずに、フリックして php に戻って試してみてください。

$sql = ("INSERT INTO calendar (`Cal_Date`) VALUES (".$date.")");

それでも問題が解決しない場合は、SQL をエコーアウトして、構築された SQL が何であるかを正確にお知らせください。そうすれば、より迅速に修正できます。

于 2012-11-18T06:37:54.880 に答える
1

まず、文字列を丸括弧で囲む必要はありません!

これでうまくいくはずです!

$sql = "INSERT INTO `calendar` (`Cal_Date`) VALUES ('$date')";

解決策を理解するのがさらに難しくなります(引用符に関して):

$sql = 'INSERT INTO `calendar` (`Cal_Date`) VALUES (\''.$date.'\')';

これもうまくいくはずです:

$sql = "INSERT INTO calendar (Cal_Date) VALUES ('$date')";

注 : バックティック ( ` ) は、フィールド名とテーブル名にのみ使用され、テーブル名またはフィールド名にスペースが含まれている場合にのみ必要です!

一重引用符または二重引用符を使用して、SQL 内の文字列、日付、文字、varchar を区切ります。ブール値、null、および数値には何も使用しません!

これが役に立ったことを願っています!

于 2012-11-18T13:39:25.080 に答える
1

文字列リテラルは、バッククォート (MySQL では SQL 識別子を引用するためだけのもの) ではなく、一重引用符'(または無効になっ"ている場合は二重引用符) で引用する必要があります。ANSI_QUOTES

于 2012-11-18T07:23:50.370 に答える