[英]issues creating an array php
我正在寫一個PHP應用程序,其中一項功能是能夠查詢我們所有表中的基因相互作用(gene_r, genes_newL_dn, genes_newL_up, genes_oldL_up, genes_oldL_dn)
。 因此,我具有以下PHP
函數來一次查詢所有這些數據庫。
public function getAllInteractions($input){
$data = array();
$sql_list = (
"SELECT * FROM genes_r JOIN drugs_r ON drugs_r.id = genes_r.id WHERE drug_name='$input' OR gene_name='$input'",
"SELECT * FROM genes_newL_dn JOIN drugs_newL_dn ON drugs_newL_dn.id = genes_newL_dn WHERE drug_name='$input' OR gene_name='$input'",
"SELECT * FROM genes_newL_up JOIN drugs_newL_up ON drugs_newL_up.id = genes_newL_up WHERE drug_name='$input' OR gene_name='$input'",
"SELECT * FROM genes_oldL_dn JOIN drugs_oldL_dn ON drugs_oldL_dn.id = genes_oldL_dn WHERE drug_name='$input' OR gene_name='$input'",
"SELECT * FROM genes_oldL_up JOIN drugs_oldL_up ON drugs_oldL_up.id = genes_oldL_up WHERE drug_name='$input' OR gene_name='$input'"
);
foreach($sql_list as $sql){
$query = $this->db->query($sql);
// case 1 : SQL Query invalid / empty results
if(!$query || $query->num_rows() == 0) {
continue;
}
else {
$id = $query->row()->id;
$sql = "SELECT interaction from matrix_r WHERE id='$id'";
$query = $this->db->query($sql);
array_push($data, $query->row());
}
}
return $data;
}
但是,出現以下錯誤:
PHP Parse error: syntax error, unexpected ',' in
/chemicalgenomics/ci/application/models/search_model.php on line 81
我不明白為什么不喜歡','。 應該是一個字符串數組。 有人可以幫我嗎? 謝謝
PS: Line 81
是數組中的第一行: "SELECT * FROM ...
您初始化數組錯誤,需要將array
放在開頭:
$sql_list = array(
"SELECT * FROM genes_r JOIN drugs_r ON drugs_r.id = genes_r.id WHERE drug_name='$input' OR gene_name='$input'",
"SELECT * FROM genes_newL_dn JOIN drugs_newL_dn ON drugs_newL_dn.id = genes_newL_dn WHERE drug_name='$input' OR gene_name='$input'",
"SELECT * FROM genes_newL_up JOIN drugs_newL_up ON drugs_newL_up.id = genes_newL_up WHERE drug_name='$input' OR gene_name='$input'",
"SELECT * FROM genes_oldL_dn JOIN drugs_oldL_dn ON drugs_oldL_dn.id = genes_oldL_dn WHERE drug_name='$input' OR gene_name='$input'",
"SELECT * FROM genes_oldL_up JOIN drugs_oldL_up ON drugs_oldL_up.id = genes_oldL_up WHERE drug_name='$input' OR gene_name='$input'"
);
如果您使用的是PHP 5.4或更高版本(但是,不是很多Web主機都支持),則可以使用您所接近的新短數組語法,但該字符應使用方括號( [
)而不是括號( (
)):
$sql_list = [
"SELECT ...",
"SELECT ...",
];
$sql_list = array(x, y, z);
是PHP數組的正確語法。 因此,在您的代碼中,應為:
$sql_list = array(
"SELECT * FROM genes_r JOIN drugs_r ON drugs_r.id = genes_r.id WHERE drug_name='$input' OR gene_name='$input'",
"SELECT * FROM genes_newL_dn JOIN drugs_newL_dn ON drugs_newL_dn.id = genes_newL_dn WHERE drug_name='$input' OR gene_name='$input'",
"SELECT * FROM genes_newL_up JOIN drugs_newL_up ON drugs_newL_up.id = genes_newL_up WHERE drug_name='$input' OR gene_name='$input'",
"SELECT * FROM genes_oldL_dn JOIN drugs_oldL_dn ON drugs_oldL_dn.id = genes_oldL_dn WHERE drug_name='$input' OR gene_name='$input'",
"SELECT * FROM genes_oldL_up JOIN drugs_oldL_up ON drugs_oldL_up.id = genes_oldL_up WHERE drug_name='$input' OR gene_name='$input'"
);
如果您使用的是PHP 5.4,則可以使用以下簡化的語法:
$sql_list = [
"SELECT * FROM genes_r JOIN drugs_r ON drugs_r.id = genes_r.id WHERE drug_name='$input' OR gene_name='$input'",
"SELECT * FROM genes_newL_dn JOIN drugs_newL_dn ON drugs_newL_dn.id = genes_newL_dn WHERE drug_name='$input' OR gene_name='$input'",
"SELECT * FROM genes_newL_up JOIN drugs_newL_up ON drugs_newL_up.id = genes_newL_up WHERE drug_name='$input' OR gene_name='$input'",
"SELECT * FROM genes_oldL_dn JOIN drugs_oldL_dn ON drugs_oldL_dn.id = genes_oldL_dn WHERE drug_name='$input' OR gene_name='$input'",
"SELECT * FROM genes_oldL_up JOIN drugs_oldL_up ON drugs_oldL_up.id = genes_oldL_up WHERE drug_name='$input' OR gene_name='$input'"
];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.