0

次の機能が機能しておらず、その理由がわかりません。

function nuevoContacto($_POST) {
    try {
        include('func/usarBases.php');
        $mensaje="INSERT INTO `t_contactos`(`id_c`, `nombre`, `telefono`, `telefono2`, `corto`, `celular1`, `celular2`, `email`, `puesto`, `id_a`) VALUES (NULL,'$_POST[nombre]','$_POST[tel1]','$_POST[tel2]','$_POST[corto]','$_POST[cel1]','$_POST[cel2]','$_POST[email]','$_POST[puesto]','$_POST[id_a]')";
        $hacerConsulta = $base->prepare($mensaje);
        $hacerConsulta->execute();
    }
    catch( PDOException $e) {
        echo "<p>Error Connection: " .$e->getMessage()."</p>";
    }   
    $hacerConsulta=null;
}

コードが呼び出されると、コードが壊れ、それ以上何も実行されません。ただし、メインコード内で使用すると機能します

申し訳ありませんが、ソースを再編集しましたが、まだ機能していません。

4

2 に答える 2

2

あるべき姿

function nuevoContacto($base)
{
    $sql  = "INSERT INTO  t_contactos VALUES (NULL,?,?,?,?,?,?,?,?,?)";
    $data = array(
        $_POST['nombre'],
        $_POST['tel1'],
        $_POST['tel2'],
        $_POST['corto'],
        $_POST['cel1'],
        $_POST['cel2'],
        $_POST['email'],
        $_POST['puesto'],
        $_POST['id_a']
    );
    $stmt = $base->prepare($sql);
    $stmt->execute($data);
}

$_POST の代わりに $base をパラメータとして呼び出す必要があります

于 2013-08-28T14:53:04.547 に答える
0

関数にデータベース接続がありません。関数の先頭に次を追加します。

global $base;

関数に追加global $baseすると、全体を書き直さなくても関数内で使用できるようになります。

無関係なメモですが、言及する価値があります。

あなたはSQL インジェクションに対してオープンであり、準備されたステートメントを適切に使用していません。クエリに直接渡すのではなく、プレースホルダーを使用して後でバインドする必要があります。

次回のヒント:
が機能していないか を質問に記載してください。あなたの期待と実際に起こること。

于 2013-08-28T14:48:29.223 に答える