Php mysqli_stmt::execute()只需要0个参数,1个给定错误

Php mysqli_stmt::execute()只需要0个参数,1个给定错误,php,mysqli,Php,Mysqli,有人能告诉我为什么会出现这个错误吗?mysqli_stmt::execute()只需要0个参数,1个参数在中给出,我已经检查了所有参数。我不确定是什么地方出了问题。我还尝试将单引号更改为双引号,但仍然得到相同的错误 代码在这里。坦克 <?php include 'dbconnect.php'; $g_id = 'g_id'; $g_name = 'g_name'; $query = $db->prepare("SELECT g_id, g_name, h_d FROM g_po

有人能告诉我为什么会出现这个错误吗?
mysqli_stmt::execute()只需要0个参数,1个参数在
中给出,我已经检查了所有参数。我不确定是什么地方出了问题。我还尝试将单引号更改为双引号,但仍然得到相同的错误

代码在这里。坦克

<?php

include 'dbconnect.php';

$g_id = 'g_id';
$g_name = 'g_name';

$query = $db->prepare("SELECT g_id, g_name, h_d FROM g_post WHERE g_id = '$g_id'");
$query->execute(array("g_id" => $_GET['game_id']));
$query->bind_result($g_id, $g_name, $h_d);
?>

MySQLI比PDO更有条理,首先您需要占位符(
),而不是将值正确地放在查询中

bind_param()
i
integer、
s
string、
d
decimal/integer/float和
b
blob中传递正确类型的日期

如果查询有20个字段,您需要声明20个变量,请在
bind\u result()
处使用最后一个字段

$query = $db->prepare("SELECT g_id, g_name, h_d FROM g_post WHERE g_id = ?");
$query->bind_param('i', $g_id);
$query->execute();
$result = $query->get_result();

while($row = $result->fetch_assoc()){
    echo $row['g_id'] . ' - '. $row['g_name'] .'<br>';
}

1)占位符的名称前面需要一个冒号+您不需要引用它们2)当您使用PDO时,您只能将数组传递给
execute()
,而不支持mysqli\u*mysqli也不支持命名占位符。它解决了问题。但是,它不会回显我试图显示的变量$h_d和$g_name。我正在使用
while($query->fetch())
@LostinDigitalWorld如果你喜欢
bind\u result()
没关系:P我不喜欢
$query = $db->prepare("SELECT g_id, g_name, h_d FROM g_post WHERE g_id = ?");
$query->bind_param('i', $id);
$query->execute();
$query->bind_result($g_id, $g_name);
while($query->fetch()){
    echo $g_id . ' - '. $g_name .'<br>';
}
<?php

include 'dbconnect.php';

$g_id = 'g_id';
$g_name = 'g_name';

$query = mysqli_query ($con, "SELECT g_id, g_name, h_d FROM g_post WHERE g_id = '$g_id'") or die(mysqli_error($con));
$name=( $query) ? mysqli_fetch_assoc( $query) : false;