有一些主题缩小了我的问题范围,但没有人允许我解决它。我有一个术语的csv文件,我想从中计算数据库表中的数字,并将结果写入一个新的csv文件中。我需要创建一个新的数组,其中每个键都是第一个数组的一个项,值是数据库中相关的记录数。以下是一些输入示例:
乳糖
丝氨酸
我想要这样的东西:
乳糖,25
丝氨酸,3
所以我创建了一个数组,它的值是csv文件中的项。然后我在sql查询中输入这个数组的值。然后,我一直无法在互联网或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'];
}
在行中:
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.'%''';
更改:
$molnumbers [$ancientvalue['molnames']] = $count3['quantities'];
收件人:
$molnumbers[$ancientvalue['molnames']] = $count3['quantities'];
或者:
$molname = $ancientvalue['molnames'];
$molnumbers[$molname] = $count3['quantities'];