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;
}

一旦它被调用,代码就会中断,并且不会执行任何进一步的操作。但是当你在主代码中使用它时它可以工作

抱歉,我重新编辑了源代码,然后仍然无法正常工作,在包含 usarBases.php 中是名为 $base 的连接器 pdo

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);
}

必须使用 $base 作为参数而不是 $_POST 调用

于 2013-08-28T14:53:04.547 回答
0

您的函数中缺少数据库连接。将以下内容添加到函数的开头:

global $base;

当您添加global $base到您的函数时,您将能够在您的函数中使用它,而无需重新编写整个内容。

无关的注释,但值得一提。

对 SQL 注入持开放态度,并且没有按照应有的方式使用准备好的语句。您应该使用占位符并稍后绑定它们,而不是直接将它们传递到您的查询中。

下一次的提示:
在你的问题中说明什么不起作用。您的期望是什么以及实际发生了什么。

于 2013-08-28T14:48:29.223 回答