我写了一个类来获取值和table_name作为参数,并将值插入到相应的表中。这在我的linux系统上的项目中工作得非常好。但是今天我把一个项目移到了一台Windows笔记本电脑上,而且这个课程给出了错误
“预备语句中没有为参数提供数据。”
这是我的班级:
<?php
/**
* Created by PhpStorm.
* User: root
* Date: 3/27/17
* Time: 10:11 PM
*/
namespace MYSQL;
ini_set('display_errors',0);
class Insert
{
private $table_name;
private $array;
//initializing variable and array
public function __construct(){
$this->table_name='';
$this->array= array();
}
/**
* @set array
*/
public function setArray($array){
foreach ($array as $key => $value)
$this->array[$key]=$value;
}
/**
* @set array
*/
public function setTableName($table_name){
$this->table_name=$table_name;
}
/**
* @return array
*/
public function getArray()
{
return $this->array;
}
/**
* @return string
*/
public function getTableName()
{
return $this->table_name;
}
public function performTask($con){
foreach ($this->getArray() as $key=>$value){
$fields[]=$key;
$values[]=$value;
/*
if(gettype($value)== 'integer')
$values['i']=$value ;
if(gettype($value)== 'string')
$values['s'] =$value;
if(gettype($value)== 'double')
$values['d']=$value;
*/
}
$stmt=$con->prepare("INSERT INTO ".$this->getTableName()."(".implode(',',$fields).") VALUES (".implode(',', array_fill(0, count($fields), '?')).")");
$values = array_merge(array(str_repeat('s', count($values))), array_values($values));
call_user_func_array(array(&$stmt, 'bind_param'), $values);
if($stmt->execute()){
$stmt->close();
return "Inserted Successfully.";
}
else{
$stmt->close();
return "Failed to Insert records.";
}
}
}
我已经认真地解决了关于这个错误的所有问题,并且还没有为我的案例找到任何合理的解决方案。