php - PDOStatement : Invalid parameter number 中的警告

标签 php mysql pdo prepare

<分区>

也许您可以帮助我处理这部分代码。我试图让它工作,但是当我尝试 UPDATE 时,总是显示这个错误:

Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in /home/-----/public_html/soft/Admin/configuracion.php on line 264

第 264 行是:

// Execute the query
            $stmt->execute();

以下:

 $stmt->bindParam(':page_meta_tag', $_POST['page_meta_tag']);
   $stmt->bindParam(':id', $_POST['id']);

这是我的代码:

    <?php
include '../include/update_config.php';

$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);

$action = isset( $_POST['action'] ) ? $_POST['action'] : "";
if($action == "update"){
        try{
             $query = "update CONFIGURACION set id = :id, nombre_clinica = :nombre_clinica, direccion = :direccion, telefono_clinica = :telefono_clinica, titulo_clinica = :titulo_clinica, logo = :logo, page_meta_tag = page_meta_tag where id = 1";

                $stmt = $conn->prepare($query);

                $stmt->bindParam(':nombre_clinica', $_POST['nombre_clinica']);
                $stmt->bindParam(':direccion', $_POST['direccion']);
                $stmt->bindParam(':telefono_clinica', $_POST['telefono_clinica']);
                $stmt->bindParam(':titulo_clinica', $_POST['titulo_clinica']);
                $stmt->bindParam(':logo', $_POST['logo']);
                $stmt->bindParam(':page_meta_tag', $_POST['page_meta_tag']);
                $stmt->bindParam(':id', $_POST['id']);

                // Execute the query
                $stmt->execute();

                echo "Record was updated.";

        }catch(PDOException $exception){ //to handle error
                echo "Error: " . $exception->getMessage();
        }
}

try {

        //prepare query
        $query = "select nombre_clinica, direccion, telefono_clinica, titulo_clinica, logo, page_meta_tag from CONFIGURACION where id = 1";
        $stmt = $conn->prepare( $query );

        //this is the first question mark
        $stmt->bindParam(1, $_REQUEST['id']);

        //execute our query
        $stmt->execute();

        //store retrieved row to a variable
        $row = $stmt->fetch(PDO::FETCH_ASSOC);

        $id = $row['id'];
        $nombre_clinica = $row['nombre_clinica'];
        $direccion = $row['direccion'];
        $telefono_clinica = $row['telefono_clinica'];
        $titulo_clinica = $row['titulo_clinica'];
        $logo = $row['logo'];
        $page_meta_tag = $row['page_meta_tag'];

}catch(PDOException $exception){ //to handle error
        echo "Error: " . $exception->getMessage();
}


?>
            <form class='form-horizontal' method='post' action='' enctype='multipart/form-data'>
                <fieldset>
                <legend><i class='icon32 icon-wrench'></i>Configuración General del Sistema</legend>

                <div class='control-group'>
                    <label class='control-label' for='typeahead'>Nombre de la Clínica</label>
                    <div class='controls'>
                        <input type='text' class='span6 typeahead' name='nombre_clinica' 
                            value='<?php echo $nombre_clinica;  ?>' />
                    </div>
                </div>
                <div class='control-group'>
                    <label class='control-label' for='typeahead'>Dirección</label>
                    <div class='controls'>
                        <input type='text' class='span6 typeahead' name='direccion' 
                            value='<?php echo $direccion;  ?>' />
                    </div>
                </div>
                <div class='control-group'>
                    <label class='control-label' for='typeahead'>Número de Teléfono</label>
                    <div class='controls'>
                        <input type='text' class='span6 typeahead' name='telefono_clinica' 
                            value='<?php echo $telefono_clinica; ?>' />
                    </div>
                </div>
                <div class='control-group'>
                    <label class='control-label' for='typeahead'>Viñeta de página web</label>
                    <div class='controls'>
                        <input type='text' class='span6 typeahead' name='titulo_clinica' 
                            value='<?php echo $titulo_clinica; ?>' />
                    </div>
                </div>
                <div class='control-group'>
                    <label class='control-label' for='typeahead'>Logo Clínica</label>
                    <div class='controls'>
                        <input class='input-file uniform_on' id='fileInput' name='logo' type='file' />
                        <br />
                        <img style='max-height:80px;' src='../images/<?php echo $logo; ?>' />
                    </div>
                </div>
                <div class='control-group'>
                    <label class='control-label' for='typeahead'>Meta tag del Software clínico</label>
                    <div class='controls'>
                        <input type='text' class='span6 typeahead' name='page_meta_tag' 
                            value='<?php echo $page_meta_tag; ?>' />
                    </div>
                </div>
                <div class='control-group'>
                    <div class='controls'>
                <input type='hidden' name='id' value='<?php echo $id ?>' /><input type='hidden' name='action' value='update' />
                <input type='submit' class='btn btn-primary' value='Actualizar configuracion' />
                    </div>
                </div>
                </fieldset>
             </form> 

最佳答案

您错过了 : 将查询更改为:

$query = "update CONFIGURACION set 
  id = :id, 
  nombre_clinica = :nombre_clinica, 
  direccion = :direccion, 
  telefono_clinica = :telefono_clinica, 
  titulo_clinica = :titulo_clinica, 
  logo = :logo, 
  page_meta_tag = :page_meta_tag  // <--- here it was missing
  where id = 1";

关于php - PDOStatement : Invalid parameter number 中的警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16681005/

相关文章:

php - MySQL推荐,字段vs关系表

php - 查询 PDO 中的绑定(bind)参数错误

php - 如何在mysql查询中比较条件多表?

php 从二维 session 数组中取消设置数组

php - 具有正则表达式字符类的 CDbCriteria 参数

mysql - Mac 上的 Rails - rake db :create error

php - PDO 和 SQL 创建临时表的一般错误

php yii 在数据库中找不到事件记录类 ""的表 ""

javascript - 我正在学习 php 和 mysql,我正在使用数组创建动态表单。抛出空查询警告

php - 使用单选按钮作为复选框