相关疑难解决方法(0)

如何使用bind_result与get_result的示例

我想看一个如何调用使用bind_resultvs 的示例,以及get_result使用one over另一个的目的是什么.

也是使用每个的利弊.

使用任何一个的限制是什么,是否存在差异.

php mysql mysqli prepared-statement

76
推荐指数
1
解决办法
8万
查看次数

致命错误:调用未定义的方法mysqli_result :: fetch_all()

我在Ubuntu 10.04中遇到PHP问题.当我尝试使用mysqli_result :: fetch_all时出现此错误:

调用未定义的方法mysqli_result :: fetch_all()

但是,它适用于Windows XP.

代码:

$result = $this->dbh->query('SELECT [...] ');
return $result->fetch_all(MYSQLI_ASSOC);
Run Code Online (Sandbox Code Playgroud)

我不想在循环中使用fetch_assoc,因为我将结果发送到另一个层进行处理.

我使用的是PHP 5.4.4.和php -m | grep mysql mysqlnd模块它没有出现.我该如何安装?这可能是问题吗?

php mysqli fetchall mysqlnd

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

PHP Apache在执行STORED PROCEDURE时崩溃

问题

当我执行以下代码时(我正在调用具有5个IN参数和1个OUT参数的存储过程)

$conn->query("SET @res = ''");

$mysqli=$conn;
if (!($stmt = $mysqli->prepare("CALL retrieve_matches(5,3, 16, 2, false, @res)"))) {
    echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

if (!$stmt->execute()) {
    echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
}

do {
    if ($res = $stmt->get_result()) { //Apache crash on this call
        printf("---\n");
        var_dump(mysqli_fetch_all($res));
        mysqli_free_result($res);
    } else {
        if ($stmt->errno) {
            echo "Store failed: (" . $stmt->errno . ") " . $stmt->error;
        }
    }
} while …
Run Code Online (Sandbox Code Playgroud)

php mysql apache stored-procedures wamp

19
推荐指数
3
解决办法
972
查看次数

bind_result成为一个PHP mysqli编写的数组语句

想知道我如何将PHP预处理语句的结果绑定到一个数组中然后我怎么去调用它们.例如这个查询

$q = $DBH->prepare("SELECT * FROM users WHERE username = ?");
$q->bind_param("s", $user);
$q->execute();
Run Code Online (Sandbox Code Playgroud)

这将返回结果的用户名,电子邮件和ID.想知道我是否可以将它绑定在一个数组中,然后将其存储在一个变量中,以便我可以在整个页面中调用它?

php arrays mysqli prepared-statement

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

MySQLI Prepared Statement:num_rows&fetch_assoc

下面是一些写得不好且严重误解的PHP代码,没有错误检查.说实话,我正在努力让我的脑袋绕着PHP-> MySQLi函数的迷宫!有人可以提供一个示例,说明如何使用预准备语句收集关联数组中的结果,同时从$ stmt获取行数?下面的代码是我正在玩的东西.我认为让我失望的是使用$stmt后的值store_result,然后尝试收集一个关联数组,我不太清楚为什么......

$mysqli = mysqli_connect($config['host'], $config['user'], $config['pass'], $config['db']);
$stmt = $mysqli->prepare("SELECT * FROM licences WHERE generated = ?");
$stmt->bind_param('i', $core['id']);
$result = $stmt->execute();
$stmt->store_result();

if ($stmt->num_rows >= "1") {

    while($data = $result->fetch_assoc()){ 
        //Loop through results here $data[] 
    }

}else{

    echo "0 records found";

}
Run Code Online (Sandbox Code Playgroud)

我觉得有点厚颜无耻只是要求代码,但它是我的情况的工作演示,我觉得我需要最终了解实际发生了什么.太感谢了!

php mysqli associative-array prepared-statement fetch

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

MySQLi get_result()在安装mysqlnd时未定义

我正在编写一个简单的测试脚本来了解MySQLi准备好的语句.该脚本将成为在处理结果时需要略微动态的函数的基础.我需要fetch方法作为一个类似于mysql_fetch_array()行为的数组返回.

我知道其中一些方法需要mysqlnd.我检查了phpinfo.Mysqlnd已安装并存在.见截图. 在此输入图像描述 在此输入图像描述

请注意,PDO在我的服务器上可用,但我需要在此时使用此脚本与MySQLi一起使用.!PDO将在本项目的后期进行研究.

require_once(__ROOT__ . '/config.inc.php');

$mysqli = new mysqli($config['db']['server'], $config['db']['username'], $config['db']['password'], $config['db']['database_name']);
$userid = 10;

$stmt = $mysqli->prepare("SELECT username, firstname, lastname FROM maj_user WHERE user_id < ?");

if ($stmt)
{
    /* bind parameters for markers */
    $stmt->bind_param('i', $userid);

    /* execute query */
    $stmt->execute();
    $result = $stmt->get_result();

    while ($row = $result->fetch_array())
    {
        echo 'We selected "' . $row['username'] . ' (' . $row['firstname'] . ' ' . $row['lastname'] . ')"' . PHP_EOL;
    }

    $result->close();
}

$mysqli->close();
Run Code Online (Sandbox Code Playgroud)

上面的代码导致:

致命错误 …

php mysqli mysqlnd

8
推荐指数
1
解决办法
1475
查看次数

动态绑定mysqli_stmt参数然后绑定结果(PHP)

我正在尝试动态绑定mysql_stmt参数并在关联数组中获取结果.我在stackoverflow上找到了这篇文章,其中Amber发布了以下代码的答案:

原帖: 如何用准备好的语句制作一个合适的mysqli扩展类?

"假设你实际上想要编写自己的版本(而不是利用其他答案所建议的现有库之一 - 那些也是很好的选择)......

以下是一些您可能会发现有用的功能.第一个允许您将查询的结果绑定到关联数组,第二个允许您传入两个数组,一个是有序的键数组,另一个是这些键的数据的关联数组,并将数据绑定到准备好的声明:"

function stmt_bind_assoc (&$stmt, &$out) {
    $data = mysqli_stmt_result_metadata($stmt);
    $fields = array();
    $out = array();

$fields[0] = $stmt;
$count = 1;

while($field = mysqli_fetch_field($data)) {
    $fields[$count] = &$out[$field->name];
    $count++;
}
call_user_func_array(mysqli_stmt_bind_result, $fields);

}

function stmt_bind_params($stmt, $fields, $data) {
    // Dynamically build up the arguments for bind_param
    $paramstr = '';
    $params = array();
    foreach($fields as $key)
    {
        if(is_float($data[$key]))
            $paramstr .= 'd';
        elseif(is_int($data[$key]))
            $paramstr .= 'i';
        else
            $paramstr .= 's';
        $params[] = $data[$key];
    }
    array_unshift($params, $stmt, …
Run Code Online (Sandbox Code Playgroud)

php dynamic prepared-statement sqlbindparameter

6
推荐指数
2
解决办法
9471
查看次数

致命错误:调用未定义的方法mysqli_stmt :: get_result()

由于我已经将我的网站移动到新的vServer,我总是收到此错误消息

Fatal error:  Call to undefined method mysqli_stmt::get_result()
Run Code Online (Sandbox Code Playgroud)

这些代码行正常工作

$mysql = new mysqli($db_host, $db_user, $db_password, $db_database);
$partys = NULL;
$res_partys = $mysql->query("SELECT * FROM party ORDER BY begin");
while($row_partys = $res_partys->fetch_array()) {
    $partys[] = $row_partys;
}
$count_reg = $mysql->prepare("SELECT COUNT(*) FROM guestlist WHERE partyid = ?");
$count_reg->bind_param('i', $party['partyid']);
$count_reg->execute();
Run Code Online (Sandbox Code Playgroud)

$count_res = $count_reg->get_result();失败了.Mysqli支持已启用.

Accorind到一些互联网资源我需要PHP MySQL本机驱动程序,但我只在我的Debian 7机器上安装了php5-mysql,因为安装php5-mysqlnd via apt-get install php5-mysqlnd会自动删除Froxlor,这是我的服务器管理面板.

是否还有其他方法可以安装mysqlnd,除非通过apt-get download php5-mysqlnddpkg 下载并安装它,因为这会因为未满足的要求而在每次跟随apt-get调用时抛出错误,并从源代码编译PHP包括mysqlnd?

php mysql mysqli prepared-statement mysqlnd

6
推荐指数
1
解决办法
6246
查看次数

使用预准备语句获取多行

我对准备好的陈述很陌生,我不确定我是否做得对.

这是我尝试的:

$currgame = 310791;

$sql = "SELECT fk_player_id, player_tiles, player_draws, player_turn, player_passes, swapped FROM ".$prefix."_gameplayer WHERE fk_game_id = ?";
$stmt = $mysqli->stmt_init();

$data = array();
if($stmt->prepare($sql)){
    $stmt->bind_param('i', $currgame);
    $stmt->execute();

    $fk_player_id = null; $player_tiles = null; $player_draws = null; $player_turn = null; $player_passes = null; $swapped = null;
    $stmt->bind_result($fk_player_id, $player_tiles, $player_draws, $player_turn, $player_passes, $swapped);

    $res = $stmt->get_result();

    while ($row = $res->fetch_assoc()){
        $data[] = $row;
    }
    $stmt->close(); 
}

// to display own games
foreach ($data as $row) {
    if ($row['fk_player_id'] == …
Run Code Online (Sandbox Code Playgroud)

php mysqli prepared-statement

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

准备好的语句fetch_assoc php mysqli

我在准备好的陈述中列出评论时遇到了问题.有任何想法吗?

这是我的代码:

$fetchComments = $cnx -> prepare("SELECT comment FROM comments WHERE video_id=? LIMIT 1");
$fetchComments -> bind_param('s', $row['id']);
$fetchComments -> execute();
$fetchComments -> store_result();
$fetchComments -> bind_result($vid_comment);
if ($fetchComments -> num_rows > 0) {
    whike ($row = mysqli_fetch_assoc($vid_comment)){
    echo $row['comment'];
    }
}
Run Code Online (Sandbox Code Playgroud)

php mysqli prepared-statement

5
推荐指数
2
解决办法
6651
查看次数