首页 > 解决方案 > prepeared statments 中的 php bind_param 使程序停止而没有错误或警告

问题描述

我编写了这个准备好的语句来将数据从 php 发送到我的本地主机

         $stmt = $conn->prepare("INSERT INTO info VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
          if ( false===$stmt ) {echo '<script type="text/javascript">alert("false prepeared statment '.htmlspecialchars($conn->error).'");</script>';}
         try{
         $rc = $stmt->bind_param("ssssssssssssssssssss", 'f', '$name1', '$name2', '$name3', '$lastname', '$mother', '$bornplace',
            '$phone', '$empTitle', '$school', '$lastDegree', '$lastSpeciality', '$lastUniversity', '$lastCollege',
             '$subject', '$nextSpeciality', '$nextSubSpeciality', '$nextDepartment', '$nextCollege', '$nextUniversity');
         }catch(Exception  $er){
             echo('err: '.$er->getMessage());
         }

          $rc = $stmt->execute();
          if ( false===$rc ) {echo '<script type="text/javascript">alert("false excute '.htmlspecialchars($stmt->error).'");</script>';}
          $stmt->close();
          $conn->close();

当我运行程序时,执行在到达 bind_param 行时“冻结”,没有错误消息或警告。当我注释 bind_param 行时,程序执行不会“冻结”并继续下一行,并给我错误消息“没有为准备语句中的参数提供数据”。请注意,我将变量名称(在 bind_param 中)设置为字符串,以确保问题不在于变量的值。try catch 语句也不起作用。此外,当我在(准备)行中输入一些错误时,它会向我显示错误。但是当我在 (bind_param) 行中输入错误时,它就会一直冻结!请注意 localhost 正常显示所有行中的所有错误。但是当涉及到这个 bind_param 时,它并没有按预期工作。我尝试了一个包含 3 个变量的不同表格,

标签: phpsqlxamppprepared-statementbindparam

解决方案


推荐阅读