从像POST
这样的$uri = explode("&", $_SERVER["QUERY_STRING"]);
方法我可以检索插入操作所需的值。我还有一个构造函数,它调用另一个为我的sqlite连接返回PDO
的函数:
private function dbConnect()
{
try {
$this->db = new PDO('sqlite:model.sqlite3');
$this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e) {
echo $e->getMessage();
}
return $this->db;
}
此方法已使用GET
进行测试,并且没问题。现在我想通过URI调用插入表新记录:
private function disciplines(){
// Cross validation if the request method is POST else it will return "Not Acceptable" status
if($this->get_request_method() != "PUT"){
$this->response('',406);
}
$uri= array();
//echo "The query string is: ".$_SERVER['QUERY_STRING'];
$uri = explode("&", $_SERVER["QUERY_STRING"]);
if(uri){
$sTable= array();
$sValue= array();
foreach ($uri as $var_val) {
$var_val = explode('=', $var_val);
$var[]= $var_val[0];
$val[]= $var_val[1];
}
array_shift($var);
array_shift($val);
//shift arry is for esclude first element on arrays
$sTable= implode(',', $var);
$sValue= implode(',', $val);
print_r(array_values($var));
print_r(array_values($val));
输出:
Array //array1
(
[0] => discipline
[1] => Material
)
Array // array 2
(
[0] => sword
[1] => Iron
)
最后的愿望步骤:
$qry = $this->db->exec(
'INSERT INTO disciplines ($sTable) VALUES ($sValue)');
echo $qry;
不起作用!请你能帮我正确的方向吗?任何帮助都很有价值。
我现在得到的是什么:
echo $qry;
'INSERT INTO discipline (Array) VALUES (Array)');
我需要什么:
INSERT INTO disciplines (discipline, material ) VALUES (sword, iron )');
答案 0 :(得分:0)
只要数组正确验证
<?php
$sql = 'INSERT INTO disciplines ( ' . implode( ',', $arr1 ) . ' ) VALUES ( ' . implode( ',', $arr2 ) . ' )';
?>
但我建议使用带有占位符的预准备语句
<?php
$sql = 'INSERT INTO disciplines ( ' . implode( ',', $arr1 ) . ' ) VALUES ( ' . implode( ',', array_fill( 0, count( $arr2 ), '?' ) ) . ' )';
?>
看看prepare()和exec() http://php.net/manual/en/pdo.prepare.php