Php ile mysql sorgularken neden boş kayıtların dönen?

4 Cevap php

I created the following script to query a table and return the first 30 results. The query returns 30 results, but they do not have any text or information. Why would this be?

Tablo Vietnam karakterleri saklar. Veritabanı mysql4 olduğunu.

İşte sayfası: http://saomaidanang.com/recentposts.php

İşte kod:

<?php
  header( 'Content-Type: text/html; charset=utf-8' );
 //CONNECTION INFO
 $dbms = 'mysql'; 
 $dbhost = 'xxxxx';
 $dbname = 'xxxxxxx';
 $dbuser = 'xxxxxxx';
 $dbpasswd = 'xxxxxxxxxxxx';    
 $conn = mysql_connect($dbhost, $dbuser, $dbpasswd ) or die('Error connecting to mysql');
 mysql_select_db($dbname , $conn);

 //QUERY
 $result = mysql_query("SET NAMES utf8");
 $cmd = 'SELECT * FROM `phpbb_posts_text` ORDER BY `phpbb_posts_text`.`post_subject` DESC LIMIT 0, 30 '; 
 $result = mysql_query($cmd);
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html dir="ltr">
<head>
<title>recent posts</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
 <p>

<?php 
 //DISPLAY
 while ($myrow = mysql_fetch_row($result))
 {
  echo 'post subject:';
  echo(utf8_encode($myrow ['post_subject']));
  echo 'post text:';
  echo(utf8_encode($myrow ['post_text']));
 }
?>
 </p>
</body>

4 Cevap

veya mysql_fetch_object() denemek ve $myrow->post_subject olarak veriye erişebilir. Eğer veriler hala görüntülenmiyorsa düşünüyorsanız, o zaman çıkış için bir print_r($myrow) yapmak. Veri döndürdü edilmiş ise, bu şekilde emin olacaktır.

Eğer mysql_fetch_row () kullanırsanız, numaralı tuşlardan (yani $ row [0], $ row [1], vb) aracılığıyla veri erişim ihtiyacımız olacak. mysql_fetch_object () Shamly tarafından belirtildiği gibi satır getiriliyor çoğu uygulamalar bugün norm.

Ben günlük kodlama yapmak için PHP'nin sağlanan işlevleri kullanarak büyük bir hayranı değilim. Bunun yerine, gibi, sizin için işi yapmak için bir sınıf veya bir kaç işlevleri yazma düşünüyor (veya indirme):

function my_query($query){
  $return = array(); // stuff to return

  $result = mysql_query($query);
  while($row = mysql_fetch_object($result)){
    array_push($return, $row);
  }

  return $return;
}

Öyleyse yapmanız gereken tüm bu komut şöyledir:

// connect to db, fill in the appropriate arguments...
$link = mysql_connect(...);

// selecting database
mysql_select_db($dbname, $link);

// do the query
$rows = my_query(...);
foreach($rows as $row){
   print_r($row); // see what's in there...
}

My_query () işlevini kullanarak, kendinizi birkaç adım kaydedin. Bu döngüler içinde iç içe geçmiş sorgular yapmak da yararlıdır. Ne okumak daha kolay?

// assume database is already connected
$result = mysql_query('SELECT user_id FROM table');
while($row = mysql_fetch_object($result)){
   $result_2 = mysql_query('SELECT * FROM other_table WHERE user_id = '.$row->user_id);
   while($row_2 = mysql_fetch_object($result_2)){
       // do stuff with both rows
       // potential for lots of confusion and mysql errors
   }
}

ya bu ...

// assume database is already connected
$user_ids = my_query('SELECT user_id FROM table');
foreach($user_ids as $x){
    $more_data = my_query('SELECT * FROM other_table WHERE user_id = '.$x->user_id);
    foreach($more_data as $y){
        // do stuff 
    }
}

Neyse, muhtemelen çok daha uzun süre beklenenden daha cevap, ama ben size şeyler hakkında gitmek nasıl :) Eğer zamanınız varsa, Wordpress yüklemek ve $ wpdb nesne inşa kullanmayı öğrenmek bir fikir verir umarım. Sen veritabanları gerçek hayat uygulamalarında kullanılan nasıl bilgi hazinesi kazanacak ve sizin ihtiyaçlarını karşılamak için kendi veritabanı sınıfı yapmak mümkün olacak.

YASAL UYARI: Ben sadece sözdizimi hataları için test olmadan bu yazı için tüm yukarıdaki kod yazdı. Eğer varsa ben özür dilerim.

kullanın:

while ($myrow = mysql_fetch_array($result))
{ ... }

bu iş olacak