我正在尝试创建运行mysql查询的函数
我如何执行插入查询等操作。我在想
function insert_query ($table,$cols,$values)
{
$sql="insert into $table ($cols) values ($values) "; ...etc
}
使用函数中的其余查询代码。但是,我如何添加多个列和值?
我应该在函数内部$cols
和$values
数组吗?
答案 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;
}