在PHP/MySQL查询中创建关联数组

5

我在我的profileTable表中有一个名为"Associations"的列,我正试图查询与这些关联相关的个人资料。

$sql = mysqli_query($con,"SELECT * FROM profileTable  WHERE  Keyword_ID LIKE
'%".$getKeyID."%' ORDER BY  Associations <> 'School of Engineering 
and Computer Science', Associations AND LaName ASC LIMIT $start,$end");

我可以按教育程度对个人资料进行索引,但不能按协会进行索引。

    while ($row = mysqli_fetch_array($sql)) {
        $key = $row['Keyword_Name'];
        $keyID = $row['Keyword_ID'];
        $fname = $row['FirName'];
        $lname = $row['LaName'];
        $mname = $row['MName'];
        $suffix = $row['Suffix'];
        $title = $row['Title'];
        $title2 = $row['Title2'];
        $title3 = $row['Title3'];
        $education = $row['Education'];
        $education2 = $row['Education2'];
        $education3 = $row['Education3'];
        $dept = $row['Dept'];
        $phone1 = $row['PH1'];
        $phone2 = $row['PH2'];
        $email = $row['Email'];
        $photo = $row['Photo'];
        $bio = $row['BioLK'];
        $website = $row['Website'];
        $assocs = $row['Associations'];

$actions=array('School of Engineering and Computer Science'=>'Computer Science 
       and Engineering');

我需要将关联数组和$key(单词)相关联,这样如果用户点击“计算机”关键字,它将与“工程与计算机科学学院”相关联,并首先将其索引到“工程与计算机科学学院”中。
这在其他列(如“教育”)上的运作很好,但似乎无法在我的关联数组中起作用。有什么想法吗?
例子sqlfiddle: http://sqlfiddle.com/#!2/c1802/7/0

4
为什么你要将那一行代码解包成数百万个变量? - Mike 'Pomax' Kamermans
1
你有一个数据容器存储了所有的数据,为什么要将其解包成20个变量,而不是在需要使用它的代码部分中使用关联数据数组呢?这只会使你的代码变得不必要地庞大,没有任何实际好处(例如,$title1和$data["title1"]一样易读)。 - Mike 'Pomax' Kamermans
更进一步地说,您可能还想发布一个 http://sqlfiddle.com/ 链接来展示您的数据实际上是什么样子的,并且查询易于复制。 - Mike 'Pomax' Kamermans
请查看这个可工作的 sqlfiddle - david strachan
1
这个 - david strachan
显示剩余7条评论
2个回答

2
以下查询按照要求列出排序后的输出。
SELECT * FROM mediaContacts ORDER BY  associations DESC,lname ASC

Fiddle

如果School of Engineering and Computer Science是最后一个字母记录,则这个关联有效。

如果School of Engineering and Computer Science不是最后一个字母记录,则此方法将失败,需要使用另一种方法。


谢谢@davidstrachan,这解决了我的问题...并根据我点击的关键字隔离了我的关联,正如我所期望的那样。再次感谢! - MizAkita

0
你可以尝试以下操作:
while ($row = mysqli_fetch_array($sql)) { 改为 while ($row = mysql_fetch_assoc($sql)) { 这样做将会返回一个与获取行对应的关联数组,并将内部数据指针向前移动。

我也曾这样想,但它却没有返回任何结果。使用fetch_array可以返回结果,只是没有首先索引“Associations”。嗯... - MizAkita
我已经在http://sqlfiddle.com/#!2/c1802/7/0添加了一个sqlfiddle,如果你将“assoc”改回“array”,它就可以工作了... - MizAkita

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接