在 bind_param 不起作用后查询 execute() [重复]

Posted

技术标签:

【中文标题】在 bind_param 不起作用后查询 execute() [重复]【英文标题】:Query execute() after bind_param not working [duplicate] 【发布时间】:2022-01-14 17:07:42 【问题描述】:

基本上是通过邮递员的发帖请求将用户发送到附加到我的网站的 php 脚本,脚本就是这个

    <?php
    include_once 'config.php';
    header('Access-Control-Allow-Origin: *');
    header('Access-Control-Allow-Headers: Accept, Content-Type, X-Requested-With');
    header('Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE, PUT');
    header('Access-Control-Max-Age: 600');
    $ts = gmdate("D, d M Y H:i:s") . " GMT";
    header("Expires: $ts");
    header("Last-Modified: $ts");
    header("Pragma: no-cache");
    header("Cache-Control: no-cache, must-revalidate");

    $contacto_existe = $mysqli->prepare("SELECT id FROM contactos WHERE nombre = ?");
    $contacto_existe->bind_param("s", $_POST['nombre_contacto']);
    $contacto_existe->execute();
    $contacto_existe->store_result();
    
        if($contacto_existe->num_rows === 0)
        $contacto_existe->close();
        $insertar_nuevo_contacto = $mysqli->prepare("INSERT INTO contactos (nombre, fecha_primera_interaccion, fecha_ultima_interaccion) VALUES (?, now(), now())");
        $insertar_nuevo_contacto->bind_param("s", $_POST['nombre_contacto']);
        $insertar_nuevo_contacto->execute();
        $id_contacto = $mysqli->insert_id;
        $insertar_nuevo_contacto->close();
     else 
        $contacto_existe->bind_result($id_contacto);
        $contacto_existe->fetch();
        $contacto_existe->close();
    
    
    
    $insert_mensaje = $mysqli->prepare("INSERT INTO mensajes (celular_id, contacto_id, fecha,mensaje ) VALUES (?, ?, now(),?)");
    // $insert_mensaje->bind_param("s", $_POST['id_celular'], $id_contacto,$_POST['fecha_inicial'],$_POST['mensaje']);
    $insert_mensaje->bind_param("s", $_POST['id_celular'], $id_contacto,$_POST['mensaje']);
    $insert_mensaje->execute();
    $insert_mensaje->fetch();
    $insert_mensaje->close();
    
    
   

?>

最后我试图在 msg 表 (mensajes) 中插入上一个查询结果中的帖子值和 id_contacto (id_contact) 但它似乎正在工作,我不知道可能是什么问题

【问题讨论】:

【参考方案1】:

我刚刚发现了错误。我必须在 bind_param 方法中指定该查询的值类型,在这种情况下它应该是

$insert_mensaje->bind_param("iis", $_POST['id_celular'], $id_contacto,$_POST['mensaje']);

其中 iis = 整数、整数、字符串

【讨论】:

以上是关于在 bind_param 不起作用后查询 execute() [重复]的主要内容,如果未能解决你的问题,请参考以下文章

我扩展 QApplication 并在 exec_ 后调用一个方法不起作用

CREATE TABLE 命令在 Hive 查询语言中不起作用

MySQL更新查询出错[关闭]

在计算引擎上从 PHP 的 exec() 调用时,gsutil 不起作用

在 exec-maven-plugin 中设置 systemProperty 不起作用

bind_param() 有啥作用?