簡體   English   中英

創建數組php的問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM