SQL语句上的php绑定参数不起作用

时间:2016-03-08 15:15:35

标签: php mysql database web-services

我试图在php上做一个选择,但是我在将绑定参数传递给标准sql语句时遇到了问题。我已经失去了所有的一天,我无法找到任何解决方案。我有一个sql语句和一个参数(这部分不断变化)

这里我有我的sql语句和执行:

$mysqli=getDB();
    $stmt = $mysqli->prepare('SELECT nom from noms where id=?'); // cambiar select 
    $sql->bind_param($id);
    $result = $mysqli->query($sql);
    $results = array();
    while($row = mysqli_fetch_array($result)){
        $results[] = array( // modificar el que passa dintre del bucle
            'nom' => $row['nom']
         );
    }

   echo json_encode($results);

以下是我与数据库连接的方式(getDB()):

function getDB() {
    // Credencials
    $servername = "server";
    $username = "user";
    $password = "pswwd";
    $dbname = "database";


    $mysqli = new mysqli($servername, $username, $password, $dbname);
    if ($mysqli->connect_errno) {
        echo "Error al connectar: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
    }

    return $mysqli;

}

所有这些实际上都是一个Web服务功能,当我调用它时,我收到500消息错误。我需要运行更改$ id值的语句(这些参数来自外部)。我只是从JS控制台收到500错误状态,但我没有看到任何错误消息。

编辑:

我对声明和执行做了一些更改:

$mysqli=getDB();
        $stmt = $mysqli->prepare('SELECT nom from noms where id=?'); // cambiar select 
        $stmt ->bind_param($id);
        $result = $mysqli->query($stmt );
        $results = array();
        while($row = mysqli_fetch_array($result)){
            $results[] = array( // modificar el que passa dintre del bucle
                'nom' => $row['nom']
             );
        }

       echo json_encode($results);

日志仍然显示相同的消息:   PHP致命错误:在非对象上调用成员函数bind_param()

1 个答案:

答案 0 :(得分:1)

RTM:http://php.net/manual/en/mysqli-stmt.bind-param.php

语法是

$stmt->bind_param('types', $var1, $var2, etc....)

您只提供了$var1部分,并忘记了类型。您需要告诉mysqli您的参数是什么类型,例如

$stmt->bind_param('i', $id);
                  ^^^---missing in your version

请注意,无论何时获得500,您立即去查看您的网络服务器的错误日志以获取实际细节。您在浏览器中看到的内容是故意模糊的,因为500个错误可以揭示永远不会公开的核心/配置细节。