php mysql-ге менің жазбаларымды неге көрсете алмаймын?

Деректер базасында жазбалар бар, бірақ оларды көрсете алмаймын. Біреу менің кодтарымды тексере алады ма? Мен әуесқой веб-әзірлеушімін. Кез келген көмек үшін рахмет.

<?php
$groups=mysql_query("SELECT * FROM groups ORDER BY id ASC");
$g_res=mysql_affected_rows();
if($g_res>0)
{
while($row=mysql_fetch_array($groups))
{
    $g_id=$row['id'];
    $g_name=$row['g_name'];

    $members=mysql_query("SELECT * FROM members WHERE group='$g_id'");
    $m_res=mysql_affected_rows();
    if($m_res>0)
    {
        while($row2=mysql_fetch_array($members))
        {
            $m_id=$row2['id'];
            $m_name=$row2['m_name'];
            $m_email=$row2['m_email'];
            echo "<tr><td>$m_name
($g_name)</td><td>$m_email</td></tr>"; } } else { echo "<tr><td colspan=2>Nothing to display</td></tr>"; } } } else { echo "<tr><td colspan=2>Error</td></tr>"; } ?>

Осы кодпен Error деген else нәтижесін аламын. Егер сұраудан WHERE group = '$ g_id' алып тастасаңыз, менің барлық жазбалар кездейсоқ көрсетіледі, бірақ менің жазбаларымды (мүшелері) топқа көрсету керек.

0
ескерту сіздің кодыңыз sql инъекция шабуылдарына осал болуы мүмкін.
қосылды автор Daniel A. White, көзі
Сондай-ақ, сіз біріктірумен жақсы жұмыс істей аласыз.
қосылды автор Daniel A. White, көзі
Сондай-ақ, сіз біріктірумен жақсы жұмыс істей аласыз.
қосылды автор Daniel A. White, көзі

(«. $ G_name.») </td> <td> «$ m_email.» echo «<tr> <td>» $ m_name « & zwnj;/td> </tr> «;
қосылды автор Sergio, көзі

(«. $ G_name.») </td> <td> «$ m_email.» echo «<tr> <td>» $ m_name « & zwnj;/td> </tr> «;
қосылды автор Sergio, көзі
Қатені SQL сұрауынан алу үшін mysql_error() пайдаланыңыз; бұл қатені көре алатыныңызға қарай өзіңіздің else сөзіңізге қосыңыз
қосылды автор Alex Coleman, көзі
Пожалуйста, қолдануға тыйым салынған MySQL _ * .
қосылды автор Voitcus, көзі

7 жауаптар

MySQL-де сақталған сөздерді топ артқы жақтары бар

SELECT * FROM members WHERE `group` = '$g_id'
                            ^-----^-------------here

Осындай деректерге қосқан кезде сіз ішкі циклды сақтай аласыз

select g.id as gid, g.g_name, m.id as mid, m.m_name, m.m_email
from groups g
inner join members m on g.id = m.group
order by g.id asc

Бұл оңай және өнімділікті арттырады, өйткені көптеген сұрауларды орындаудың қажеті жоқ, тек біреуі.

Сондай-ақ, mysql_ * функцияларын жаңа кодта қолданбаңыз . Олар бұдан былай сақталмайды және ресми түрде ескірген . Оның орнына Дайындалған мәлімдемелер туралы біліп, PDO немесе MySQLi . Қысқаша шолу үшін оны қалай жасауға болатындығын және Бұл мақаланы қараңыз. неге бұл өте маңызды.

3
қосылды
Мен «топ» - MySQL-те сақталған сөз екенін білмедім. осы адамға көрсеткені үшін рахмет. бұл менің проблемамды шешті.
қосылды автор user1957878, көзі

MySQL-де сақталған сөздерді топ артқы жақтары бар

SELECT * FROM members WHERE `group` = '$g_id'
                            ^-----^-------------here

Осындай деректерге қосқан кезде сіз ішкі циклды сақтай аласыз

select g.id as gid, g.g_name, m.id as mid, m.m_name, m.m_email
from groups g
inner join members m on g.id = m.group
order by g.id asc

Бұл оңай және өнімділікті арттырады, өйткені көптеген сұрауларды орындаудың қажеті жоқ, тек біреуі.

Сондай-ақ, mysql_ * функцияларын жаңа кодта қолданбаңыз . Олар бұдан былай сақталмайды және ресми түрде ескірген . Оның орнына Дайындалған мәлімдемелер туралы біліп, PDO немесе MySQLi . Қысқаша шолу үшін оны қалай жасауға болатындығын және Бұл мақаланы қараңыз. неге бұл өте маңызды.

3
қосылды
Мен «топ» - MySQL-те сақталған сөз екенін білмедім. осы адамға көрсеткені үшін рахмет. бұл менің проблемамды шешті.
қосылды автор user1957878, көзі

MySQL-де сақталған сөздерді топ артқы жақтары бар

SELECT * FROM members WHERE `group` = '$g_id'
                            ^-----^-------------here

Осындай деректерге қосқан кезде сіз ішкі циклды сақтай аласыз

select g.id as gid, g.g_name, m.id as mid, m.m_name, m.m_email
from groups g
inner join members m on g.id = m.group
order by g.id asc

Бұл оңай және өнімділікті арттырады, өйткені көптеген сұрауларды орындаудың қажеті жоқ, тек біреуі.

Сондай-ақ, mysql_ * функцияларын жаңа кодта қолданбаңыз . Олар бұдан былай сақталмайды және ресми түрде ескірген . Оның орнына Дайындалған мәлімдемелер туралы біліп, PDO немесе MySQLi . Қысқаша шолу үшін оны қалай жасауға болатындығын және Бұл мақаланы қараңыз. неге бұл өте маңызды.

3
қосылды
Мен «топ» - MySQL-те сақталған сөз екенін білмедім. осы адамға көрсеткені үшін рахмет. бұл менің проблемамды шешті.
қосылды автор user1957878, көзі

Өз айнымалыларыңызды біріктіру керек. Мынаны көріңіз:

$members=mysql_query("SELECT * FROM members WHERE `group`='".$g_id."'");

Және

echo "<tr><td>".$m_name."
(".$g_name.")</td><td>".$m_email."</td></tr>";

0
қосылды

Қалай көріңіз

$members=mysql_query("SELECT * FROM members WHERE `group` = '".$g_id."');

немесе қарапайым

$members=mysql_query("SELECT * FROM members WHERE `group` = '$g_id'");
0
қосылды
Теріс емес болса да, зиян келтіре алмайсыз, идентификатор көбінесе бүтін, бірақ оның кодексінде ештеңе жоқ, ол оны мәжбүр етеді
қосылды автор Alex Coleman, көзі
Екінші нұсқадағы $ g_id айналасындағы apostrahets-ді ұмытпаңыз
қосылды автор Alex Coleman, көзі
Неліктен ..... кез келген себеппен төмендетті?
қосылды автор Gautam3164, көзі
Ok @AlexColeman Мен сондай-ақ ... құнды ұсыныстар үшін рахмет айтты
қосылды автор Gautam3164, көзі
Өйткені бұл бүтін құндылық болғандықтан, біз бұл үшін бұрынғы жолдауды қажет етпейміз
қосылды автор Gautam3164, көзі

Қалай көріңіз

$members=mysql_query("SELECT * FROM members WHERE `group` = '".$g_id."');

немесе қарапайым

$members=mysql_query("SELECT * FROM members WHERE `group` = '$g_id'");
0
қосылды
Теріс емес болса да, зиян келтіре алмайсыз, идентификатор көбінесе бүтін, бірақ оның кодексінде ештеңе жоқ, ол оны мәжбүр етеді
қосылды автор Alex Coleman, көзі
Екінші нұсқадағы $ g_id айналасындағы apostrahets-ді ұмытпаңыз
қосылды автор Alex Coleman, көзі
Ok @AlexColeman Мен сондай-ақ ... құнды ұсыныстар үшін рахмет айтты
қосылды автор Gautam3164, көзі
Неліктен ..... кез келген себеппен төмендетті?
қосылды автор Gautam3164, көзі
Өйткені бұл бүтін құндылық болғандықтан, біз бұл үшін бұрынғы жолдауды қажет етпейміз
қосылды автор Gautam3164, көзі

Қалай көріңіз

$members=mysql_query("SELECT * FROM members WHERE `group` = '".$g_id."');

немесе қарапайым

$members=mysql_query("SELECT * FROM members WHERE `group` = '$g_id'");
0
қосылды
Теріс емес болса да, зиян келтіре алмайсыз, идентификатор көбінесе бүтін, бірақ оның кодексінде ештеңе жоқ, ол оны мәжбүр етеді
қосылды автор Alex Coleman, көзі
Екінші нұсқадағы $ g_id айналасындағы apostrahets-ді ұмытпаңыз
қосылды автор Alex Coleman, көзі
Ok @AlexColeman Мен сондай-ақ ... құнды ұсыныстар үшін рахмет айтты
қосылды автор Gautam3164, көзі
Неліктен ..... кез келген себеппен төмендетті?
қосылды автор Gautam3164, көзі
Өйткені бұл бүтін құндылық болғандықтан, біз бұл үшін бұрынғы жолдауды қажет етпейміз
қосылды автор Gautam3164, көзі