-2

我很清楚以前有人问过这个问题,我很抱歉再次问,但其他人没有针对我的情况回答。我不知道这个 bind_param 有什么问题。这是我的 PHP 的代码:

<?php
$db = new mysqli("localhost", "HIDDEN", "HIDDEN", "HIDDEN");
if ($db->connect_error) {
   die("Sorry, there was a problem connecting to our database.");
}

$username = stripslashes(htmlspecialchars($_GET['username']));

$result = $db->prepare("SELECT * FROM messages");
$result->bind_param("s", $username);
$result->execute();

$result = $result->get_result();
while ($r = $result->fetch_row()) {
   echo $r[1];
   echo "\\";
   echo $r[2];
   echo "\n";
}

这个 bind_param 有什么问题?很抱歉再次打扰并感谢您的帮助。

4

2 回答 2

3

您应该在您的准备语句中使用placeholders(问号,?),并且方法的参数数量bind_param应该是 1+num of ?symbols。

第一个参数表示参数的数据类型,然后是绑定参数值。

在您的示例中,您将 2 个参数传递给您的 bind_param 方法(第一个参数s代表字符串,第二个参数$username代表值。),但?查询中没有占位符。

于 2015-09-15T01:37:41.767 回答
1

那是因为您试图在s此处绑定变量$result->bind_param("s", $username);

问题是您没有在查询中使用它。

于 2015-09-15T01:24:36.313 回答