2

今までにない奇妙な問題があります。

descriptionmysqlテーブルに。という名前の列がありますlist_items

一部の行では、説明が空であり、一部ではそうではありません。形式はミディアムテキストですが、VARCHAR(1000)のようなものに変更すると同じ問題が発生します。

これは単純なクエリです。

$result=mysql_query("select * from list_items where list_id='$id' order by position desc") or die(mysql_error());
while($iteminfo=mysql_fetch_assoc($result)){
    print_r($iteminfo);
}

そしてそれはこのようなものを与えます:

Array ( 
  [id] => 85 [list_id] => 16 [position] => 4 
  [item] => How To Be Richer Smarter And Better Looking Than Your Parents 
  [voted_up] => 0 [voted_down] => 0 
  [small_image] => http://ecx.images-amazon.com/images/I/51tdjl56TwL._SL160_.jpg
  [large_image] => http://ecx.images-amazon.com/images/I/51tdjl56TwL.jpg 
  [asin] => 1591845440 [description] => undefined [author] => Zac Bissonnette 
  [publish_date] => 2012-04-24 [genre] => ) 

説明列は、空であるかどうかに関係なく、常に「未定義」です。何か案は?

テーブル構造:

CREATE TABLE IF NOT EXISTS `list_items` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `list_id` int(11) NOT NULL,
  `position` int(11) NOT NULL,
  `item` varchar(512) NOT NULL,
  `voted_up` int(11) NOT NULL,
  `voted_down` int(11) NOT NULL,
  `small_image` varchar(128) NOT NULL,
  `large_image` varchar(128) NOT NULL,
  `asin` varchar(16) NOT NULL,
  `description` mediumtext NOT NULL,
  `author` varchar(128) NOT NULL,
  `publish_date` varchar(16) NOT NULL,
  `genre` varchar(128) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=107 ;

var_dumpはこれを返します:

array(13) { ["id"]=> string(2) "87" ["list_id"]=> string(2) "16" ["position"]=> string(1) "2" ["item"]=> string(22) "Game Of Thrones Book 1" ["voted_up"]=> string(1) "1" ["voted_down"]=> string(1) "0" ["small_image"]=> string(61) "http://ecx.images-amazon.com/images/I/51VcGBtiLTL._SL160_.jpg" ["large_image"]=> string(53) "http://ecx.images-amazon.com/images/I/51VcGBtiLTL.jpg" ["asin"]=> string(10) "0553386794" ["description"]=> string(0) "" ["author"]=> string(18) "George R.R. Martin" ["publish_date"]=> string(10) "2011-03-22" ["genre"]=> string(0) "" } 

しかし、echo $iteminfo['description']それでも「未定義」を与えます。

4

1 に答える 1

1

@robert、回答として投稿しているので、それを受け入れて閉じることができます。エラーはまったく発生していません。「未定義」は、実際には、エクスポートして私に送ったデータによると、それらのレコードのフィールド「説明」の内容です。

これを行っている不正レコードの「ID」は次のとおりです:降順に97、96、95、94、86、85、84 あなたか他の誰かが以前にそれを埋めたと思います。また、@bfavaretto が上でコメントした内容を調べる必要があります。原因である可能性が高いと思います。

私のテストソースコードを以下に示します。

<?php
   //@Author: ProfNoTime 062012 (Test Code - Not For Production Level Use)

   $conn = mysql_connect("localhost", "root", "");

   if (!$conn) { echo "Unable to connect to DB: " . mysql_error(); exit; }

   if (!mysql_select_db("test")) { echo "Unable to select mydbname: " . mysql_error(); exit; }

   $id = 1;
   $sqlQuery = "select * from list_items where list_id='$id' order by position desc";
   var_dump($sqlQuery);

   $result=mysql_query($sqlQuery) or die(mysql_error());

   if (!$result) { echo "Could not successfully run query ($sqlQuery) from DB: " . mysql_error(); exit; }
   else{
      if (mysql_num_rows($result) == 0) {
         echo "No rows found, nothing to print so am exiting...bye!"; exit;
      }
   else{
         while($iteminfo=mysql_fetch_assoc($result)){
           print_r($iteminfo);
           var_dump($iteminfo);
         }
      }
    }

   mysql_free_result($result);

お役に立てれば。

于 2012-06-21T15:12:55.597 に答える