0

別のphpファイルから入力を取得し、データをhtmlテーブルに表示するphpファイルがありますが、SQLステートメントでは日付フィールドがフィルタリングされていません。日付形式が正しくない可能性があります。これで私を助けてください

私のコードは以下です

<?php
$con = mysql_connect("localhost","root","");
if (!$con)
 {
 die('Could not connect: ' . mysql_error());
 }

 mysql_select_db("marketnews", $con);




$date1 = explode('/', $_POST['ADate']);
$time = mktime(0,0,0,$date1[0],$date1[1],$date1[2]);
$mysqldate = date( 'Y-m-d H:i:s', $time );


$date2 = explode('/', $_POST['BDate']);
$time = mktime(0,0,0,$date2[0],$date2[1],$date2[2]);
$mysqldate1 = date( 'Y-m-d H:i:s', $time );

$sec= "$_POST[id]";


echo "<br>";
echo "$mysqldate1";
echo "<br>";
echo "$sec";*/


$result = mysql_query("SELECT * FROM mktnews where security = '$sec' and eventdate    between '$mysqldate' and '$mysqldate1'");
echo '<a href="main.html"><b>BACK</b></a>';
echo "<br>";
echo "<table border='2' BORDERCOLOR=GREEN align='center' >
<tr>
<th>Firm</th>
<th>Name</th>
<th>NIC</th>
</tr>";

while($row = mysql_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['eventdate'] . "</td>";
  echo "<td>" . $row['news'] . "</td>";
  echo "<td>" . $row['security'] . "</td>";
   echo "</tr>";
  }
echo "</table>";

mysql_close($con);
?> 

このMySqlテーブルの日付形式は次のようになります

2013-04-11

これで私を助けてください

4

3 に答える 3

1

テーブルの構造によっては日付形式が正しいように見えますが、mysql ステートメントに引用符がありません。

次のようになります。

 $result = mysql_query("SELECT * FROM mktnews where security = '".$sec."' and eventdate    between '".$mysqldate."' and '".$mysqldate1."'");

ご存知のとおり、クエリもエスケープする必要があります。

于 2013-04-12T04:04:36.907 に答える
0

mysql テーブルの日付形式と比較するには、日付形式を変更する必要があります

使用する

$mysqldate = date( 'Y-m-d', $time ); instead of $mysqldate = date( 'Y-m-d H:i:s', $time );

$mysqldate1 = date( 'Y-m-d', $time ); instead of $mysqldate1 = date( 'Y-m-d H:i:s', $time );

必要に応じて結果を返します。

于 2013-04-12T04:36:49.637 に答える
0

変化する

$mysqldate = date( 'Y-m-d H:i:s', $time );

 $mysqldate = date( 'Y-m-d', $time );

そして同じ$mtsqldate1

PHP の時間形式と mysql の時間形式が異なります

于 2013-04-12T04:58:56.943 に答える