0
我想用事先準備好的聲明中插入和mysqli的更新數據,mysqli:爲插入和更新日期準備語句錯誤?
下面是我的database
類,
class database extends mysqli
{
...
# insert and update data
public function query_stmt($sql,$types = null,$params = null)
{
# create a prepared statement
$stmt = parent::prepare($sql);
if($stmt)
{
# bind parameters dynamically for markers
if($types&&$params)
{
$bind_names[] = $types;
for ($i=0; $i<count($params);$i++)
{
$bind_name = 'bind' . $i;
$$bind_name = $params[$i];
$bind_names[] = &$$bind_name;
}
$return = call_user_func_array(array($stmt,'bind_param'),$bind_names);
}
# execute query
$result = $stmt->execute();
if($result) return 'success!';
else return 'failed!';
# close statement
$stmt->close();
}
else
{
return self::get_error();
}
}
# display error
public function get_error()
{
if($this->errno || $this->error)
{
return sprintf("Error (%d): %s",$this->errno,$this->error);
}
}
public function __destruct()
{
parent::close();
//echo "Destructor Called";
}
}
它正常工作時,我有這樣一個正確的查詢,
$sql = "
INSERT root_countries_cities_towns (
tcc_names,
cny_numberic,
tcc_created
)VALUES(
?,
?,
NOW()
)";
$mysqli->query_stmt($sql, 'ss',array('UK','004'));
但我希望它在我有不正確的查詢時返回一些內容,例如,
$sql = "
INSERT root_countries_cities_townx (
tcc_names,
cny_numberic,
tcc_created
)VALUES(
?,
?,
NOW()
)";
root_countries_cities_townx
的表不存在。所以我想用query_stmt
的方法將這種類型的錯誤消息返回給我的瀏覽器。但我的方法不!爲什麼?
我試圖測試它返回一些默認的話是否正常與否,但什麼都沒有出來對我的瀏覽器,
# execute query
$result = $stmt->execute();
if($result) return 'success!';
else return 'failed!';
我應該在代碼,以便添加或更改它可以返回一個肯定的消息,當它沒事的時候返回負面的消息?
謝謝。
瞭解它。謝謝。我愚蠢的錯誤...... – laukok 2011-03-02 19:35:47