0

有一些主题缩小了我的问题,但没有人允许我解决它。我有一个 csv 文件,我想从中计算我的数据库表中的数字并将结果写入一个新的 csv 文件。我需要创建一个新数组,其中每个键都是第一个数组的一个术语,值是我数据库中相关的记录数。以下是输入的一些示例:

乳糖

丝氨酸

我想得到这样的东西:

乳糖,25

丝氨酸,3

所以我创建了一个数组,其值是 csv 文件中的术语。然后我在 sql 查询中输入这个数组的值。然后,我一直无法在 Internet 或 php 文档中找到正确的方法。最后一行完全失败,但我尝试了它,因为它似乎是管理我的任务的狭义手段。

有人可以帮助我吗?

提前致谢 !

$termslist= array();

$file = fopen('fileterms.csv', 'r');
while (($line = fgetcsv($file)) !== FALSE) {
//$line is an array of the csv elements
  foreach ($line AS $molindice => $molvalues) 
  {
    if ( ! in_array( $molvalue, $termslist ) )
            {array_push($termslist, $molvalues);}
  }
}

fclose($file);


//print_r ($termslist);

$molnumbers = array();

foreach ($termslist as $ancientkey => $ancientvalue)
{
    echo $ancientvalue;
    $sql3 = "SELECT content from mols WHERE content like '% $ancientvalue %'";
    $result3 = mysql_query($sql3)or die(mysql_error());
    $count3 = mysql_num_rows($result3);
    echo $count3;
    $molnumbers [$ancientvalue['molnames']] = $count3['quantities'];
}
4

2 回答 2

0

改变:

$molnumbers [$ancientvalue['molnames']] = $count3['quantities'];

到:

$molnumbers[$ancientvalue['molnames']] = $count3['quantities'];

或者:

$molname = $ancientvalue['molnames'];
$molnumbers[$molname] = $count3['quantities'];
于 2012-07-24T10:17:12.070 回答
0

在行中:

if ( ! in_array( $molvalue, $termslist ) )

您应该有一个小错误:

if ( ! in_array( $molvalues, $termslist ) )

然后在这一行:

$molnumbers [$ancientvalue['molnames']] = $count3['quantities'];

$ancientvalue 本身已经是值(或 molname),而不是数组本身。因此,该行只需:

    $molnumbers [$ancientvalue] = $count3['quantities'];

然后它应该将数字放入数组的正确部分。对于 sql 本身:

$sql3 = "SELECT content from mols WHERE content like '% $ancientvalue %'";

在我看来,您正在搜索 %BLANKancientvalueBLANK% 如果这不是您想要在那里做的而是寻找 %ancientvalue%,您应该将该行修改为:

$sql3 = 'SELECT content from mols WHERE content like \'%'.$ancientvalue.'%\'';
于 2012-07-24T10:45:10.190 回答