来自PHP的MySQL查询返回不正确的结果

时间:2015-05-19 19:10:08

标签: php mysql sql drupal-7

我的MySQL表“track”有以下两个字段:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="thumbBrowser">
          <ul>
            <li class="thumbLeft caseStudy tint tintWhite">
              <a href="client-page.html"><img src="images/argus_thumb.jpg" alt="one"></a>
            </li>
            <li class="thumbRight caseStudy tint">
              <img src="images/adr_thumb.jpg" alt="two">
            </li>
            <li class="hidden thumbLeft caseStudy tint tintWhite">
              <img src="images/dd_thumb.jpg" alt="three">
            </li>
            <li class="hidden thumbRight caseStudy tint">
              <img src="images/cdp_thumb.jpg" alt="four">
            </li>
             <li class="hidden thumbRight caseStudy tint tintWhite">
              <a href="client-page.html"><img src="images/pm_thumb.jpg" alt="five"></a>
            </li>
            <li class="hidden thumbLeft caseStudy tint tintWhite">
              <img src="images/argus_thumb.jpg" alt="six">
            </li>
          </ul>
          <div class="cycleButton" id="buttonClick"><img src="images/cycleIcon.png" alt="button"></div>
    </div>

值为:

Id (Int)
Name (Varchar 255)

我正在尝试使用以下函数从PHP检索所有曲目:

1   Day 1
2   Day 2
3   Day 3

在phpmyadmin上运行function getTracks() { $query = sprintf('select * from tracks'); return contentRetrieverDataBaseQuery($query)->fetchAssoc(); } function contentRetrieverDataBaseQuery($query) { $settings = contentRetrieverGetSettings(); Database::addConnectionInfo('contentRetriever', 'default', $settings['database_connection']); db_set_active('contentRetriever'); $result = db_query($query); db_set_active(); return $result; } 我得到了正确的结果。

当我这样做时:

select * from event_tracks

我得到输出“1D”,这是Id和名字的第一个字母。

我做错了什么?

编辑:更正了数据库的名称

1 个答案:

答案 0 :(得分:1)

->fetchAssoc()总是返回一行查询结果,这意味着您的数组是单个记录,并且您的循环将把该行的字符串值放入$track。然后使用$track就像它是一个数组一样,产生以下代码等价:

$arr = array('abc', 'def'); // your one row of query results.
foreach($arr as $value) {
   // $value is now 'abc';
   echo $value['name']; // parsed/executed as $value[0];
  // output is 'a'
}

字符串可以被视为字符数组,这就是PHP没有抱怨$tracks['name']的原因。它只是将['name']视为使用非数字数组索引的愚蠢尝试,并将其转换为0