Başka Mysql Komutanlığı bir Mysql komutun sonucunu kullan?

7 Cevap php

Benim cehalet dilerim ama ben bu sergiyi zor bir zaman yaşıyorum.

Ben bir mysql komutu sonucu almak ve başka bir komut kullanmak çalışıyorum.

İşte benim kod, çalışmıyor.

//select the event end date of event ID
$sql = "SELECT enddate FROM mm_eventlist_dates WHERE id = $id";
$result = mysql_query($sql);

//plug in the event end date, find event that starts the next day
$sql = "SELECT id FROM mm_eventlist_dates WHERE startdate = date_add($result, INTERVAL 1 DAY)";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
echo "Next Event ID" . $row['id'];

Kayboldum.

Lütfen yardım edin!

Teşekkürler, Nick

7 Cevap

Ben başarmak için çalışıyoruz anlamak Eğer belirli bir olaydan sonra güne başlamak tüm olayları bulmak istediğiniz gibi görünüyor. Düzeltin? Bu durumda, ne yapmak istediğiniz bir, kendinden katılmak yani, kendisi için bir masaya katılmak. SQL onlara ayrı söyleyebilirim böylece tablonun en az bir oluşumda bir takma ad vermek gerekir.

Bu gibi pek belki bir şey:

SELECT e2.id
FROM mm_eventlist_dates e1
join mm_eventlist_dates e2 on e2.startdate = date_add(e1.enddate, INTERVAL 1 DAY)
where e1.id=$id

Bir sorguya onları birleştirmek için bir neden var mı?

SELECT m1.id FROM mm_eventlist_dates m1  
JOIN mm_eventlist_dates m2 ON m1.startdate = date_add(m2.enddate, INTERVAL 1 DAY)  
WHERE m2.id = $id

mysql_query (), bir sonuç kümesi değil, gerçek bir veritabanı öğesi döndürür. Yukarıda istediğinizi yapmak, buna benzer bir şey yapmak (vb hata denetimi içermez):

//select the event end date of event ID
$sql = "SELECT enddate FROM mm_eventlist_dates WHERE id = $id";
$result = mysql_query($sql);

$enddateRow = mysql_fetch_array($result);

//plug in the event end date, find event that starts the next day
$sql = "SELECT id FROM mm_eventlist_dates WHERE startdate = date_add('" . $enddateRow["enddate"] . "', INTERVAL 1 DAY)";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
echo "Next Event ID" . $row['id'];

Siz DATE_ADD doğrudan $ sonucu kullanamazsınız. (Bir kaç satır sonra yapmak gibi) mysql_fetch_array Çağrı ve $ satır ['enddate'] kullanın.

//select the event end date of event ID
$sql = "SELECT enddate FROM mm_eventlist_dates WHERE id = $id";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$enddate = $row['enddate'];

//plug in the event end date, find event that starts the next day
$sql = "SELECT id FROM mm_eventlist_dates WHERE startdate = date_add($enddate, INTERVAL 1 DAY)";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
echo "Next Event ID" . $row['id'];

Bence

Başka bir sorgu doğrudan mysql_query sonucu kullanamazsınız, ilk değerini alıp gerekir.

Yerine

$result = mysql_query($sql);

//plug in the event end date, find event that starts the next day
$sql = "SELECT id FROM mm_eventlist_dates WHERE startdate = date_add($result, INTERVAL 1 DAY)";

Denemek

   $result = mysql_query($sql);
   $enddate = mysql_fetch_assoc($result);

    //plug in the event end date, find event that starts the next day
    $sql = "SELECT id FROM mm_eventlist_dates WHERE startdate = date_add($enddate, INTERVAL 1 DAY)";

Bu deneyin

//select the event end date of event ID
$sql = "SELECT enddate FROM mm_eventlist_dates WHERE id = $id";
$result = mysql_query($sql);

$row = mysql_fetch_assoc($result)
//plug in the event end date, find event that starts the next day
$sql = "SELECT id FROM mm_eventlist_dates WHERE startdate = date_add(".$row['enddate'].", INTERVAL 1 DAY)";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
echo "Next Event ID" . $row['id'];