标签: mysqli

PHP和MySQLi关闭()

我是MySQL和PHP的新手,我正在尝试创建自己的CMS,以帮助您更轻松地管理我的网站.有人可以解释mysqli的close()功能吗?

  1. 有必要吗?
  2. 它到底是做什么用的?
  3. 我听说在PHP运行脚本后它关闭了连接,这是真的吗?
  4. 最后,在不关闭与数据库的连接时是否存在安全问题?

php mysqli

34
推荐指数
1
解决办法
2万
查看次数

mysqli_store_result()与mysqli_use_result()

这个问题

mysqli::store_result()和之间有什么区别mysqli::use_result()

故事

模糊的文件

PHP.net上的文档似乎对两者之间的差异非常模糊.该mysqli::use_result()-page不提供任何代码样本,您链接到mysqli::multi_query()页随机寻找他们.在该页面中,给出了以下代码示例(请参阅完整代码页面):

/* store first result set */
if ($result = $mysqli->store_result()) {
    while ($row = $result->fetch_row()) {
        printf("%s\n", $row[0]);
    }
    $result->free();
}
/* print divider */
if ($mysqli->more_results()) {
    printf("-----------------\n");
}
Run Code Online (Sandbox Code Playgroud)

mysqli::store_result()-page使用完全相同相同的代码样本,但有一个例外:

/* store first result set */
if ($result = $mysqli->use_result()) {
Run Code Online (Sandbox Code Playgroud)

是的...... store_result成了use_result.请注意,即使上面的评论仍然说"商店".

更令人困惑的是

看过代码示例后,我想; "好吧,所以这是别名".可是等等!该文档提供了以下描述:

它们看起来像两个不同的东西,根本不像别名.仔细看看我发现mysqli::use_result()-page 的代码示例中还有另一个例外:$result->free();成了$result->close();.然而,当我发现在第二个代码示例(程序等效)中的同一页上使用时,我发现真相的希望很快就被破坏了 …

php mysqli

33
推荐指数
2
解决办法
2万
查看次数

用PHP 5.3.1传递参考问题

好的,这是一个奇怪的问题,所以请在我解释时请耐心等待.

我们将开发服务器从PHP 5.2.5升级到5.3.1.

在切换后加载我们的代码,我们开始得到如下错误:

Warning: Parameter 2 to mysqli_stmt::bind_param() expected to be a reference, value given in /home/spot/trunk/system/core/Database.class.php on line 105

提到的(105)行如下:

call_user_func_array(Array($stmt, 'bind_param'), $passArray);
Run Code Online (Sandbox Code Playgroud)

我们将该行更改为以下内容:

call_user_func_array(Array($stmt, 'bind_param'), &$passArray);
Run Code Online (Sandbox Code Playgroud)

此时(因为allow_call_time_pass_reference)被关闭,php抛出这个:

Deprecated: Call-time pass-by-reference has been deprecated in /home/spot/trunk/system/core/Database.class.php on line 105

在尝试解决这个问题一段时间之后,我崩溃了并且开始allow_call_time_pass_reference了.

这摆脱了Deprecated警告,但现在Warning: Parameter 2 to mysqli_stmt::bind_param() expected to be a reference每次都会发出警告,无论有没有引用.

我不知道如何解决这个问题.如果目标方法是我自己的,我只会在func声明中引用传入的变量,但它是一个(相对)本机方法(mysqli).

有没有人经历过这个?我怎么能绕过它呢?

谢谢.

php mysqli reference

32
推荐指数
3
解决办法
3万
查看次数

如何将我的站点从mysql迁移到mysqli?

我在数据库端有什么需要做的,还是只是改变的php?我可以用mysqli函数代替mysql函数吗?还有什么我应该知道的吗?

php mysqli

32
推荐指数
2
解决办法
4万
查看次数

新mysqli vs mysqli_connect

新的mysqli和有什么区别mysqli_connect?我知道执行查询是不同的;
例如:mysqli->query()mysqli_query()
为什么有两种不同类型的,什么是需要区别?

php mysqli

32
推荐指数
2
解决办法
4万
查看次数

如何使用带有PHP的Prepared Statement插入到mysql中

所以我只是在学习数据库,我希望能够存储用户输入.有人能给我一个基本的例子来说明如何使用php获取表单数据并将其保存到数据库中吗?还使表单免受sql攻击

php mysql mysqli prepared-statement

31
推荐指数
1
解决办法
4万
查看次数

单值Mysqli

我正在尝试编写一个函数,它将使用mysqli检查数据库中的单个值,而不必将其放在数组中.除了我在这里做的事情,我还能做什么?

function getval($query){
    $mysqli = new mysqli();
    $mysqli->connect(HOST, USER, PASS, DB);
    $result = $mysqli->query($query);
    $value = $mysqli->fetch_array;
    $mysqli->close();
    return $value;
}
Run Code Online (Sandbox Code Playgroud)

php mysqli

31
推荐指数
4
解决办法
9万
查看次数

致命错误:在非对象上调用成员函数fetch_assoc()

我正在尝试执行一些查询以获取有关某些图像的信息页面.我写了一个函数

function get_recent_highs($view_deleted_images=false)
{
    $lower = $this->database->conn->real_escape_string($this->page_size * ($this->page_number - 1));
    $query = "SELECT image_id, date_uploaded FROM `images` ORDER BY ((SELECT SUM( image_id=`images`.image_id ) FROM `image_votes` AS score) / (SELECT DATEDIFF( NOW( ) , date_uploaded ) AS diff)) DESC LIMIT " . $this->page_size . " OFFSET $lower"; //move to database class
    $result = $this->database->query($query);
    $page = array();
    while($row = $result->fetch_assoc())
    {
        try
        {
            array_push($page, new Image($row['image_id'], $view_deleted_images));
        }
        catch(ImageNotFoundException $e)
        {
            throw $e;
        }
    }
    return $page;
}
Run Code Online (Sandbox Code Playgroud)

根据其受欢迎程度选择这些图像的页面.我编写了一个Database …

php mysqli

30
推荐指数
2
解决办法
15万
查看次数

PHP MySQLi OOP中" - >"和"::"之间的区别

谁能告诉之间的区别mysqli->commitmysqli::commit

此页面中的标题是mysqli::commit,但在他们使用的示例中mysqli->commit.

php mysql oop mysqli

28
推荐指数
2
解决办法
1万
查看次数

Php mysqi bind_param变量数与预准备语句中的参数数量不匹配

这必须是一个新手的错误,但我没有看到它.以下是我的代码中的代码段:

$mysqli = mysqli_connect($dbCredentials['hostname'], 
    $dbCredentials['username'], $dbCredentials['password'], 
    $dbCredentials['database']);

if ($mysqli->connect_error) {
    throw new exception( 'Connect Error (' . $mysqli->connect_errno . ') '
    . $mysqli->connect_error);
}

$stmt = $mysqli->prepare("SELECT DISTINCT model FROM vehicle_types 
    WHERE year = ? AND make = '?' ORDER by model");

$stmt->bind_param('is', $year, $make);

$stmt->execute();
Run Code Online (Sandbox Code Playgroud)

当我回显$ year和$ make的值时,我看到了值,但是当我运行这个脚本时,我得到一个空值,并且我的日志文件中出现以下警告:

PHP Warning:  mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement
Run Code Online (Sandbox Code Playgroud)

在这种情况下,year在数据库中的类型为int(10),并且我已经尝试传递一个已经转换为int的副本,而make是一个带有utf8_unicode_ci编码的varchar(20).我错过了什么吗?

php mysqli prepared-statement

28
推荐指数
1
解决办法
3万
查看次数

标签 统计

mysqli ×10

php ×10

mysql ×2

prepared-statement ×2

oop ×1

reference ×1