Internet Explorer kullanırken MySQL sorgu bazen başarısız olur

4 Cevap php

Ben php ve MySQL için yeni duyuyorum. Ben bir kullanıcı bir devlet seçmek ve devlet hastaneleri görüntüleyebilirsiniz bir site var. Tüm devletler için FireFox iyi çalışır, ama IE'de, ben bir kaç yüz hastaneler, ekran yanıp söner ile devlet var ve ben sonunda sayfa görüntülenemiyor bir mesaj aldığınızda. Birkaç hastaneler ile küçük devletler için, sorgu IE'de çalışıyor.

Yine, bu yüzden herhangi bir öneri büyük takdir bu yeni duyuyorum. İşte kod:

<form action="redirect_hosp.php" method="get">

<?php

$link = mysql_connect('SERVERNAME.com', 'USERNAME', 'PASSWORD'); 
if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
} 
/*print 'Connected successfully';*/ 
mysql_select_db(it_phys);

$sql = "SELECT distinct(state) FROM hospitals ORDER BY state";
$rs = mysql_query($sql)or die("Connection to DataBase failed");
print ("<div align=center>");
print("<font color='#008000' size='2' face='Tahoma'><b>Find a Hospital</b></font><br><br>");
print ("Select a State<br>");
print ("<SELECT name='State' onchange='form.submit();'>");
print("<OPTION value='none' selected></OPTION>\n");
for($i = 0; $i < mysql_num_rows( $rs ); $i++)
{
$tmp = mysql_fetch_row( $rs );
print("<OPTION value=\"$tmp[0]\">$tmp[0]</OPTION>\n");
}
print ("</SELECT>");
print ("</div>");
mysql_free_result($rs);
mysql_close($link);

?>


<?php
if(isset($_GET['State'])) 
{
  $State=$_GET['State'];
  print "<div align=center><br><br>";
  print "State Selected: ".$State;
  print "<br><br></div>";
  /* run query to pull members based on state */
  $link = mysql_connect('SERVERNAME.com', 'USERNAME', 'PASSWORD'); 
if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
} 
/*print 'Connected successfully';*/ 
mysql_select_db(it_phys);

      $query = "SELECT
           hospitals.`Hospital Name`, hospitals.Address1,
           concat(rtrim(hospitals.City),', ',rtrim(upper(hospitals.State)), ' ', hospitals.zip) as City_State,
           hospitals.state,hospitals.`Phone Number`,hospitals.`Hospital Type`,hospitals.`Emergency Service`,
           hospitals.map
           FROM hospitals WHERE hospitals.state='".$State."' ORDER by hospitals.`Hospital Name`"; 


    $result = mysql_query($query) or die('Query failed: ' . mysql_error()); 
  /* show in table */
  // Printing results in HTML
    print "<style>

    h2 { border-bottom: 3px solid red; }
    table { border-bottom: 1px solid blue; align='left'; cellpadding=0; cellspacing=0 }
    td {border-bottom: 0px outset black; cellpadding=0 }

    </style>";
    print "<div align=center>";
    print "<table cellpadding='20'>";


    $i=0;
    $rows=mysql_num_rows($result);
    while($i < $rows) {
    	print "<tr>";
    	print "<style> td {border-bottom: 3px outset green; }</style>";
    	print "<td valign='top' align='left'>";
        print "<font color='red'><strong>".mysql_result($result, $i, 0)."</strong></font>";
    	print "<br>".mysql_result($result, $i, 1);
    	print "<br><font color='red'>".mysql_result($result, $i, 2)."</font>";
    	print "<br>".mysql_result($result, $i, 4);	
    	print "</td>";
    	print "<td width=350 valign='top' align='left'>";
        print "<br>Type: ".mysql_result($result, $i, 5);
        print "<br>Emergency Care: ".mysql_result($result, $i, 6);
        print "<br><br>";
        print "<a STYLE='text-decoration:none' target='_blank'
                 href='http://maps.google.com/maps?f=q&source=s_q&hl=en&q="
                .mysql_result($result, $i, 7)."'><b> Show Map</b></a>"; 	
        print "</td>";
    	print "</tr>";

    	$i=$i+1;

    }
mysql_free_result($result);
mysql_close($link);
}
print "</table>"
?>

4 Cevap

Burada bu parçası olabilir:

print "<tr>";
print "<style> td {border-bottom: 3px outset green; }</style>";
print "<td valign='top' align='left'>";

Size önceki stil etiketi kadar stil veri taşımak gerekir.

Ve PHP kodu hakkında:

mysql_select_db(it_phys);

it_phys sabit olmadıkça, bu alıntı edilmelidir

mysql_select_db('it_phys');

Yerine + N N döndürülen satır sayısı 1 defa döndürülen satırların sayısını hesaplar döngüsü için,

for($i = 0; $i < mysql_num_rows( $rs ); $i++)
{
$tmp = mysql_fetch_row( $rs );
print("<OPTION value=\"$tmp[0]\">$tmp[0]</OPTION>\n");
}

Bu süre döngü deneyin (ve diziler etrafında parantez kullanın):

while ($tmp = mysql_fetch_row($rs)) {
    print("<OPTION value=\"{$tmp[0]}\">{$tmp[0]}</OPTION>\n");
}

Ve mysql_real_escape_string ile veritabanına giden tüm giriş kaçış:

$query = "SELECT
           `Hospital Name`, Address1,
           concat(rtrim(hospitals.City),', ',rtrim(upper(State)), ' ', zip) as City_State,
           state,`Phone Number`,`Hospital Type`,`Emergency Service`,
           map
           FROM hospitals WHERE state='".mysql_real_escape_string($State)."' ORDER by `Hospital Name`";

Muhtemelen MySQL ile ilgisi yoktur. Bu gerçek sayfa (link?) Bakmadan söylemek zor, ama etiket nitelikleri ve IE ayrıştırıcı Kusmak neden olabilecek diğer yerlerde içine ham çıkmamış bir veritabanı çok veri çıkış vardır.

Linkleri içinde veri urlencode() ile öncelenmesi gerekir. Bunu yapmak değil onun güvenli bilmedikçe nitelikleri içinde ya da başka veri muhtemelen htmlspecialchars() ile öncelenmesi gerekir.

(Yani onlar izini oldukça zor olabilir önbellek vs eklentiler olmanın erken erişim DOM birkaç tanesi, lots şeyler neden olabilir "Sayfa Görüntülenemiyor", dedi.)

Bu sorgu tüm kayıtları alınırken tamamlanmadan önce PHP komut dosyası zaman aşımına uğruyorsa mümkündür. Script zaman aşımı nedir ayarlanır?

Ayrıca, size sunu mantık ve mantık verilerinizi ayırmak için öğrenmek gerekir.

Sayfa sunucu üzerinde oluşturulan gibi, sorgu IE "çöp" olamaz. Belki de oluşturmak HTML bulunuyor.

Kodunuzu tararken fark ettim bazı şeyler:

  • Her sorgu için bağlamak gerekmez. Sadece tek bir bağlantıyı açmak ve sonunda kapatın.
  • Bu eski bir veritabanı var mı? Bu "Hastane Adı" gibi boşluklarla Alanlar bana biraz şok edici ...