Php函数运行mysql查询

时间:2013-12-30 10:47:51

标签: php mysql sql

我正在尝试创建运行mysql查询的函数

我如何执行插入查询等操作。我在想

function insert_query ($table,$cols,$values)
{
$sql="insert into $table ($cols) values ($values) "; ...etc
}

使用函数中的其余查询代码。但是,我如何添加多个列和值?

我应该在函数内部$cols$values数组吗?

4 个答案:

答案 0 :(得分:0)

简单,只是我们的阵列

function insert_query ($table,$cols,$values){
    $sql="insert into $table (".implode(",", $cols).") values (".implode("','", $values)."'') ";
}

insert_query('exampleTable', array('column_1', 'column_2', 'column_3'), array('a', 123, 'c') );

价值观的崩溃需要一个小小的注释:
字符串总是需要用引号括起来。因此,我用单个qoutes进行了内爆。这样做的缺点是,integets(例如示例中的123)也会被包裹 这不是一个大问题,但是如果你想要,你可以用一个使用is_numeric来检查它的foreach来替换implode,它应该用引号括起来。

重要安全注意:
在这个例子中我没有使用适当的seurity,比如escape_string(),这必须添加!我没有添加thos来保持示例更小


另一种方法可能是数组的键/值使用:

function insert_query ($table,$data){
    $cols = array_keys($data);
    $values = array_values($data);
    $sql = "insert into $table (".implode(",", $cols).") values (".implode("','", $values)."'') ";
}
$info = array('column_1'=>'a', 'column_2'=>123, 'column_3'=>'c');
$info['example'] = 'Easy method to add more key/values';
insert_query('tableName', $info);

答案 1 :(得分:0)

在这种情况下,您可以使用与codeigniter功能类似的功能。 使用数组来存储表名和列或值

例如:

$data = array('hid' => $hcsdate,'start_date' => $sdate, 'end_date' => $edate, 'title' =>$title);

此处$data包含列名称和相应的值。

并将此$data传递给另一个插入,更新等函数。

答案 2 :(得分:0)

这是我正在使用的。将字段名称和值作为数组键和值传递。 $ lsQry是一个字段名称和数组的数组。价值对

function insert_record($table,$lsQry)
{
    $fields_str = implode(',',array_keys($lsQry));
    $data_str = implode("','",$lsQry);        
    $data_str = "'" . implode("','", $lsQry) . "'";         

    $lsQry = "INSERT INTO $table($fields_str) VALUES($data_str)";
    $rs = mysql_query($lsQry);

    if(isset($rs))
        return true;
    else
        return false;        
}

请注意

对于此函数,请考虑该函数正在获取字段名称和值对的数组。假设在从post / get值创建数组时已经应用了htmlentities()和addslashes()或任何转义函数。

答案 3 :(得分:0)

这是我的数据库类的功能。

public function insert($table,$values){               
                $fieldNames = "";
                $fieldValues = "";

                foreach($values as $key => $value){
                    $fieldNames .= "$key,";
                    $fieldValues .= "$value,";
                }
                $fieldNames = substr($fieldNames,0,-1);
                $fieldValues = substr($fieldValues,0,-1);
                $sql = "INSERT INTO $table($fieldNames) VALUES ($fieldValues)";

                $this->newConnection();
                $result = $this->mysqli->query($sql);
                $this->closeConnection();
                return $result;
  }