我最近从mysql切换到mysqli并开始使用准备好的语句。在mysql中我们做
$result = mysql_query("SELECT * FROM table WHERE id = ?");
因此,我们将整个表的数组放在一个变量中。
但是在mysqli中
mysqli_stmt_bind_result($stmt, $result);
所以基本上这里只有一个变量绑定到变量结果。我们如何获得与从mysql获得的变量(数组)相同的变量?
PS-希望我的问题足够清楚。我知道他们的方法不多,但我希望能找到最好的方法。
PSS-我对程序方式比较满意。
最终,这段代码可以正常工作了!
<?php
$host = 'localhost';
$user = 'root';
$pass = '1234';
$data = 'test';
$mysqli = new mysqli($host, $user, $pass, $data);
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
if ($stmt = $mysqli->prepare("SELECT * FROM sample WHERE t2 LIKE ?")) {
$tt2 = '%';
$stmt->bind_param("s", $tt2);
$stmt->execute();
$meta = $stmt->result_metadata();
while ($field = $meta->fetch_field())
{
$params[] = &$row[$field->name];
}
call_user_func_array(array($stmt, 'bind_result'), $params);
while ($stmt->fetch()) {
foreach($row as $key => $val)
{
$c[$key] = $val;
}
$result[] = $c;
}
$stmt->close();
}
$mysqli->close();
print_r($result);
?>
我尝试创建一个函数,在从所有用户中删除一个用户id后,为他们重建用户id。例如: 测试表: id|text 1|aaa 2|bbb 3|ccc 4|ddd 6|fff 7|ggg 8|hhh 9|iii 10|jjj 删除记录: 5|eee 我想修复所有用户的id,并修复mysql的自动增量 固定表: id|text 1|aaa 2|bbb 3|ccc 4|ddd 5|fff 6|ggg 7|hh
问题内容: 现在,我需要使用以下结构来将多个参数绑定到mysqli查询中: 我使用以下代码计算出问号的数量,并将其插入查询中: 我的问题是,肯定有一种方法可以动态处理查询中尽可能多的输入。硬编码似乎是处理此问题的一种非常糟糕的方法。 我正在使用PHP版本5.4.10 问题答案: 不幸的是,默认情况下,bind_param()不接受数组而不是单独的变量。但是,自PHP 5.6起,将进行重大改进。 要
问题内容: 这个问题不太可能对将来的访客有所帮助;它仅与较小的地理区域,特定的时间段或极为狭窄的情况(通常不适用于Internet的全球受众)有关。要获得使该问题更广泛适用的帮助,请访问帮助中心。 6年前关闭。 我有一个mysql查询,但无法为其绑定参数 我已经试过了 但我收到了并且出错了: 警告:mysqli_stmt :: bind_param():类型定义字符串中的元素数量与绑定变量的数量不
问题内容: 我正在尝试将数组作为IN变量传递给for。我怎样才能做到这一点? 我无法让它为我的一生工作。有什么想法吗?上面的代码只是一个示例。 问题答案: 在这种情况下,这样做是不合适的。您正在构造实际的SQL(这就是逗号和引号),并将其作为参数传递。它基本上以评估那里是全部。 同样,这是关于引号的一个好电话。MySQL使用单引号。 您将需要仅使用字符串连接来构建SQL,或者使用多个参数。 编辑
问题内容: 请看下面我的代码。我试图将一系列参数绑定到我准备好的语句中。我一直在网上四处逛逛,可以看到我必须使用call_user_func_array但无法正常工作。我得到的错误是:“第一个参数应该是有效的回调,给出了’Array’”我可能是错误的,但是我假设第一个参数可以是一个数组,并且此错误消息可能会引起误解。我认为问题是我的阵列在某种程度上存在错误。谁能看到我在做什么错?谢谢。 问题答案:
问题内容: 我需要从结果对象获取所有行。我正在尝试建立一个将容纳所有行的新数组。 这是我的代码: 应该是包含所有行的新数组,但是我得到一个空数组。 任何想法为什么会这样? 问题答案: 您有一个轻微的语法问题,即错误的分号。 注意结尾的分号吗?这意味着后面的程序段不是循环执行的。摆脱它,它应该可以工作。 另外,您可能需要检查查询是否确实有效: