【问题标题】:mysqli_query() expects parameter 2 to be string with bind_parammysqli_query() 期望参数 2 是带有 bind_param 的字符串
【发布时间】:2016-05-28 05:00:19
【问题描述】:

当我在浏览器中调用 archive.php 时出现错误: 警告:mysqli_query() 期望参数 2 是字符串,对象在...中给出。

<?php
    $connection = new mysqli('localhost','root','', 'scale');

    if (mysqli_connect_errno()) {
        printf("Error de conexión: %s\n", mysqli_connect_error());
        exit();
    }

    $stmt = $connection->prepare('  SELECT
                                    R.cod_region, P.region, P.comuna, COUNT(DISTINCT(P.id)) AS sitios, COUNT(DISTINCT(A.TEXTO)) AS alarmas
                                    FROM region R, pop P, sitios_pop SP, sitios S
                                    LEFT JOIN log_alarm_2g A ON S.RSITE = A.RSITE AND A.CLASE = "A1"
                                    AND A.INICIO >= "2016-02-14"
                                    WHERE
                                    R.cod_region = ? AND
                                    R.region = P.region AND
                                    S.ESTADO = "OPERATIVO" AND
                                    S.SITIO = SP.cod_sitio AND
                                    SP.id_pop = P.id
                                    GROUP BY
                                    P.region,
                                    P.comuna
                                    ORDER BY
                                    R.cod_region ');

    $stmt->bind_param('i', $cod_region);

    $resultset = mysqli_query($connection, $stmt);
    $records= array();
    while($r = mysqli_fetch_assoc($resultset)){
        $records[] = $r;
    }       
    echo json_encode($records);
?>

【问题讨论】:

  • 似乎您的数据库连接是面向对象的,并且您在面向过程中执行查询,所以如果您在完整的代码中只遵循其中一个,您就不会遇到此类错误。
  • @rjgodoy,使用$stmt-&gt;execute(); 而不是mysqli_query($connection, $stmt);
  • @RohitGoyani 已经在下面回答了!!

标签: php mysqli parameters bindparam


【解决方案1】:

对于使用prepare and bind 语句,我们使用execute() 而不是mysqli_query()

你必须使用execute()get_result()作为

  $stmt->bind_param('i', $cod_region);

  // $resultset = mysqli_query($connection, $stmt);
  $stmt->execute();// use execute
  $records= array();

  $result = $stmt->get_result();
   while ($data = $result->fetch_assoc($result))
  {
     $records[] = $data;
  }

【讨论】:

    猜你喜欢
    • 2014-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    相关资源
    最近更新 更多