参数错误PHP>> PDOStatement :: execute():SQLSTATE [HY093]:参数号无效:未定义参数

时间:2014-11-07 11:39:44

标签: php mysql

我有 index.php 文件,我有这个代码,当你在html代码中按下按钮时,它会发送你在MySQL数据库中插入数据。

$app->post('/nuevo', function() use($app, $db){
$request = $app->request;
$nombre = $request->post('Nombre');
$apellidos = $request->post('Apellidos');
$nifcode = $request->post('NIF');
$direccion = $request->post('Direccion');
$email = $request->post('Email');
$telefono = $request->post('Telefono');
$estado = $request->post('Estado');

$dbquery = $db->prepare("INSERT INTO ClientesSinHechos(Nombre, Apellidos, NIF, Direccion, Email, Telefono, Estado) 
    VALUES(:Nombre, :Apellidos, :NIF, :Direccion, :Email, :Telefono, :Estado)");
$res = $dbquery -> execute(array(':nombre' => $nombre, ':Apellidos' => $apellidos
    , ':NIF' => $nifcode, ':Direccion' => $direccion, ':Email' => $email
    , ':Telefono' => $telefono, ':Estado' => $estado));
$app->redirect('ClientesSinHechos');
});

这是在index.php中,在我的注册html页面中,我有这个部分:

    <div class="container">
    <form action="" method="POST" role="form">
    <br />
        <h3><b>Datos de cliente : </b></h3>
        <p><br />
        <table width="42%">
        <tr>
            <div>
                <label for="Nombre">Nombre : </label>
                <input width="50" type="text" class="form-control" id="Nombre" name="Nombre" placeholder="Introduce nombre">
            </div>
        </tr>
        <p><br />
        <tr>
            <div>
                <label for="Apellidos">Apellidos : </label>
                <input width="50" type="text" class="form-control" id="Apellidos" name="Apellidos" placeholder="Introduce apellidos">
            </div>
        </tr>
        <p><br />
        <tr>
            <div>
                <label for="NIF">NIF : </label>
                <input width="50" type="text" class="form-control" id="NIF" name="NIF" placeholder="Introduce NIF">
            </div>
        </tr>
        <!--<p><br />
        <tr>
            <div>
                <label for="Fecha_Nacimiento">Fecha de nacimiento : </label>
                <form name="fcalen">
                    <INPUT name="fecha1" size="10">
                    <input type=button value="Seleccionar fecha" onclick="muestraCalendario('','fcalen','fecha1')">

                </form>
            </div>
        </tr>-->
        <p><br />
        <tr>
            <div>
                <label for="Direccion">Dirección : </label>
                <input width="50" type="text" class="form-control" id="direccion" name="direccion" placeholder="Introduce dirección">
            </div>
        </tr>
        <p><br />
        <tr>
            <div>
                <label for="Email">Dirección de correo electrónico : </label>
                <input width="50" type="text" class="form-control" id="email" name="email" placeholder="Introduce correo electrónico">
            </div>
        </tr>
        <p><br />
        <tr>
            <div>
                <label for="Telefono">Teléfono : </label>
                <input width="50" type="text" class="form-control" id="telefono" name="telefono" placeholder="Introduce teléfono">
            </div>
        </tr>
        <p><br />
        <tr>
            <div>
                <label for="Estado">Estado : </label>
                <input width="50" type="text" class="form-control" id="estado" name="estado" placeholder="Introduce un estado">
            </div>
        </tr>
        <p><br />
        <button type="submit" class="btn btn-primary">Registrar</button>
        </table>
    </form>
</div>

控制台抛出了这个:

Details

Type: ErrorException
Code: 2
Message: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
File: /var/www/slimtest/index.php
Line: 44

这一行就是这一行:, ':Telefono' => $telefono, ':Estado' => $estado));

帮助谢谢。

1 个答案:

答案 0 :(得分:0)

变化:

$telefono = $request->post('Telefono');
$estado = $request->post('Estado');

要:

$telefono = $request->post('telefono');
$estado = $request->post('estado');

(小写)或将idname更改为HTML表单中的大写字母