准备声明准备错误

时间:2018-03-27 21:39:10

标签: php sql mysqli prepared-statement

插入-admin.php的

<?php

    $usuario =  $_POST['usuario'] ;
    $nombre =  $_POST['nombre'] ;
    $contraseña = $_POST['contraseña'];

    $opciones = array( 'cost' => 12 );
    $contraseña_hash = password_hash($contraseña, PASSWORD_BCRYPT, $opciones);

try {
    include_once 'funciones/funciones.php';
    $sql = "INSERT INTO admins (usuario, nombre, contraseña) VALUES (?, ?, ?)";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("sss", $usuario, $nombre, $contraseña);
    $stmt->execute();
    $stmt->close();
    $conn->close();
} catch (Exception $e) {
    echo "error: " . $e->getMessage(); 
}

include_once文件:

<?php

$conn = new mysqli('localhost', 'root', '', 'gdlwebcamp');

if ($conn->connect_error) {
    echo $error-> $conn->connect_error;
}

无法执行查询,因为bind_param收到错误。

  

错误:致命错误:未捕获错误:在C:\ xampp \ htdocs \ conferencias \ dashboard \ insertar-admin.php中调用boolean上的成员函数bind_param():14堆栈跟踪:#0 {main}抛出第14行的C:\ xampp \ htdocs \ conferencias \ dashboard \ insertar-admin.php

1 个答案:

答案 0 :(得分:0)

错误的原因是对$conn->prepare的调用失败。看到这是mysqli代码 - 请在调用prepare后检查错误:

$stmt = $conn->prepare($sql);
if ($stmt === false) {
    var_dump($conn->error);
}

此外,您对bind_param的电话似乎不正确。