繁体   English   中英

mysqli:为插入和更新日期准备语句错误?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM