PHP geçersiz MySQL kaynağı döndürür

2 Cevap php
    $LDATE = '#' . $_REQUEST['LDateDay'] . '/' . $_REQUEST['LDateMonth'] . '/' . $_REQUEST['LDateYear'] . '#';
    $RDATE = '#' . $_REQUEST['RDateDay'] . '/' . $_REQUEST['RDateMonth'] . '/' . $_REQUEST['RDateYear'] . '#';
    include("../../sql.php");
    $myconn2 = mysql_connect(/*removed*/, $username, $password);
    mysql_select_db(/*removed*/, $myconn2);
    $LSQLRequest = "SELECT * FROM flight WHERE DepartureDate = ".$LDATE;
    $LFlights = mysql_query($LSQLRequest, $myconn2);
    $RSQLRequest = "SELECT * FROM flight WHERE DepartureDate = ".$RDATE;
    $RFlights = mysql_query($RSQLRequest, $myconn2);

Tüm $ _REQUESTs gün / ay / yıl alanındaki uygun alanlar için geçerli sayısal değerler olduğunu varsayarsak, nasıl LFlights ve RFlights geçersiz olabilir? Ben sonuç yüzlerce var tüm veritabanını çağırma yapılırken yüzden veritabanı ve bağlantı verileri gayet iyi olduğunu biliyorum ve saha DepartureDate çok var.

Edit: When I pulled all the contents of the DB, the dates came back in the format "YYYY-MM-DD". So I converted D to a string if it was <10, then 0D. Then built a string YYYY-MM-DD. Still no results. No error now, but no results. I handpicked values that I knew had records in them.

2 Cevap

MySQL sadece YYYY-MM-DD biçiminde, ya da birkaç ufak tefek tarih değişmezleri anlar. DD-MM-YYYY MySQL tarafından kabul edilmez.

http://dev.mysql.com/doc/refman/5.1/en/datetime.html daha fazla ayrıntı görmek

Ayrıca başka bir cevapta belirtildiği, tarih değişmezleri dize hazır gibi tek tırnak içinde olmalıdır.


Eğer tırnak dahil etmezseniz, göstermek kod şöyle görünür:

SELECT * FROM flight WHERE DepartureDate = 2010/5/3.

3 bölü 5 bölünür aritmetik ifadesi 2.010 134,0 eşittir. Bu herhangi bir tarih maç için gitmiyor.

SELECT CURDATE() = 2010/5/3;

False döndürür.

SELECT CURDATE() = '2010/5/3';

True döndürür;

Tek qoutes yılında sorgularda Ldate ve rdate çevreleyen sahipsiniz.

$LSQLRequest = "SELECT * FROM flight WHERE DepartureDate = '".$LDATE."'";
$RSQLRequest = "SELECT * FROM flight WHERE DepartureDate = '".$RDATE."'";

Ben de size # işareti gerekmez inanıyorum. Bu genellikle bir Access şeydir.

 $LDATE = $_REQUEST['LDateDay'] . '/' . $_REQUEST['LDateMonth'] . '/' . $_REQUEST['LDateYear'] ;
 $RDATE = $_REQUEST['RDateDay'] . '/' . $_REQUEST['RDateMonth'] . '/' . $_REQUEST['RDateYear'] ;