我在我的机器上运行WAMP(PHP版本5.5.12)。我的程序适用于WAMP但是当我在远程服务器上运行程序时(PHP版本5.4.32)我收到以下错误:
数组([0] => 42S22 [1] => 1054 [2] =>未知列'地址'in '字段列表')
我正在尝试将详细信息从表单传输到数据库。我不知道问题是否与表格中的以下输入有关:
Address:<br> <textarea name="address" rows="3" cols="25" WRAP="hard"><?php echo escape(Input::get('address')); ?> </textarea>
如果已设置,则输入:: get($ item)将返回$ _POST [$ item]。其他条目如下:
Last name: <input type="text" name="last_name" value="<?php echo escape(Input::get('last_name')); ?>">
并且不会产生问题。我尝试过使用print_r($ e-&gt; errorInfo());在我的捕获声明中:
catch(例外$ e) {die($ e-&gt; getMessage()); }
但这不起作用。我不知道我是否正确使用它。有人可以提出建议。我将非常感激。
答案 0 :(得分:0)
我认为您还没有更新数据库。您尝试从数据库中获取不存在的列。
因此请检查您所在的名为地址的字段,并检查该字段是否正确。
答案 1 :(得分:0)
非常感谢回复。
我认为你还没有更新你的数据库。您尝试获取列 从您的数据库中不存在。
我已经检查了那个并不是问题所在。我认为问题在于以下功能:
public function insert($table, $fields = array())
{ if(count($fields)) //true if $fields holds data
{ $keys = array_keys($fields);
$values = ''; //to put inside query
$x = 1;
foreach($fields as $field)
{ $values .= '?';
if($x < count($fields))
{ $values .= ', ';
}
$x++;
}
$sql = "INSERT INTO {$table} (`".implode('`, `', $keys) . "`) VALUES({$values})";
if(!$this->query($sql, $fields)->error())
{ return true;
}
}
return false;
}
public function query($sql, $darams = array())
{
$this->_error = false; //reset error
if($this->_query = $this->_pdo->prepare($sql))
{ $x = 1;
if(count($darams))
{ foreach($darams as $param)
{ $this->_query->bindValue($x, $param);
$x++;
}
}
if($this->_query->execute())
{ $this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ);
$this->_count = $this->_query->rowCount();
}
else //an error has occured in SQL query
{ $this->_error = true;
}
}
return $this;
}
insert()through,$ values。=&#39;?&#39 ;;正在创造?作为字段的值。 query()到bindValue()为要插入的字段赋值。我有一个感觉地址,允许新的行,空格和逗号,在绑定时引起问题。我想知道你是否同意,如果有,你有解决方案吗?