简体   繁体   English

创建数组php的问题

[英]issues creating an array php

I'm writing a PHP application, and one of the features is be able to query gene interactions in all our tables (gene_r, genes_newL_dn, genes_newL_up, genes_oldL_up, genes_oldL_dn) . 我正在写一个PHP应用程序,其中一项功能是能够查询我们所有表中的基因相互作用(gene_r, genes_newL_dn, genes_newL_up, genes_oldL_up, genes_oldL_dn) So I have the following PHP function to query all those databases at once. 因此,我具有以下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;
}

However, I'm getting the following error: 但是,出现以下错误:

PHP Parse error:  syntax error, unexpected ',' in 
/chemicalgenomics/ci/application/models/search_model.php on line 81

I'm not getting why does not like the ','. 我不明白为什么不喜欢','。 It's supposed to be an array of strings. 应该是一个字符串数组。 Could someone please help me with that? 有人可以帮我吗? Thanks 谢谢

PS: Line 81 is the first line in the array: "SELECT * FROM ... PS: Line 81是数组中的第一行: "SELECT * FROM ...

You initialize the array wrong, you need to place the array at the begining: 您初始化数组错误,需要将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'"
);

If you have PHP 5.4 or greater (not that many web hosts do however), you can use the new short array syntax which you were close to, but the character is a bracket ( [ ) rather than a parenthesis ( ( ): 如果您使用的是PHP 5.4或更高版本(但是,不是很多Web主机都支持),则可以使用您所接近的新短数组语法,但该字符应使用方括号( [ )而不是括号( ( )):

$sql_list = [
    "SELECT ...",
    "SELECT ...",
];

$sql_list = array(x, y, z); is the right syntax for PHP arrays. 是PHP数组的正确语法。 So, in your code, it should be: 因此,在您的代码中,应为:

$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'"
);

If you are using PHP 5.4, there's shortened syntax available: 如果您使用的是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