[英]mysqli: prepare statement error for insert and update date?
我想使用准备好的语句在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!';
我应该在代码中添加或更改什么,以便它可以在没有问题时返回肯定消息,而在没有问题时返回否定消息?
谢谢。
您正在返回错误消息,而不是回显它们。 您可能必须修改数据库类以使用echo
而不是return,或者
$ret_text = $mysqli->query_stmt(...);
echo $ret_text;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.