0

我已经做了很多次了,但现在我不能:(

插入总是返回 false,但如果我执行相同的 SQL 脚本(取自输出),它会毫无问题地插入数据库。我已连接到数据库,因为某些值是从另一个表中获取的。

这是我的代码:

     $query = "INSERT INTO normotensiones(fecha,macropera,pozo,equipo_pmx,equipo_compania,paciente,sexo,edad,id_compania,otra_compania,puesto,ta,tum,ove,coordinador) 
                                VALUES('$fecha','$macropera','$pozo','$equipo_pmx','$equipo_compania','$paciente','$sexo',$edad,$id_compania,'$otra_compania','$puesto','$ta','$tum','$ove','$coordinador')";
        if (mysql_query($query,$connection)){
            //OK
        } else {
            $errno = mysql_errno();
            $error = mysql_error();
            mysql_close($connection);
            die("<br />$errno - $error<br /><br />$query");
            exit;
        }

输出是:

0 -

INSERT INTO normotensiones(fecha,macropera,pozo,equipo_pmx, equipo_compania,paciente,sexo,edad,id_compania, otra_compania,puesto,ta,tum,ove,coordinador) 
                VALUES('20111001','P. ALEMAN 1739','P. ALEMAN 1715','726', 'WDI 838','SERGIO AYALA','M',33,21, '','','110/70','ROBERTO ELIEL CAMARILLO','VICTOR HUGO RAMIREZ','LIC. PABLO GARCES')

看起来没有错误,但总是执行 if 指令的 else 部分中的代码。任何想法?提前致谢。

4

2 回答 2

1

我认为问题可能是您mysql_select_db在连接后错过了线路。

建立与数据库的连接后,您需要选择一个数据库。请确保您已选择所需表所在的数据库。

您甚至可以使用以下代码片段通过 mysql_errors 获取一些有用的信息。

    $connection = mysql_connect('localhost', 'root', 'password');

    if (!$connection) {
        die('<br>Could not connect: ' . mysql_error());
    }

    if (!mysql_select_db('db_name')) {
       die('Could not select database: ' . mysql_error());
    }

并尝试在这些代码行之后插入查询。一切顺利。

于 2013-01-31T05:22:23.723 回答
0

我同意其他关于列类型的观点。INT 是唯一不需要单引号的数据类型之一。

有两个空字符串。有可能没有定义变量,因此给你一个 PHP 异常(甚至在 MySql 中还没有),但这需要比正常的异常设置更严格。我会亲自研究 $connection 变量。在 SQL 查询语句之前,将其放入并将清理后的结果发送给我们:

echo '<pre>'.var_dump($connection, true).'</pre>';

此外,在您的 mysql_connect 函数调用中,将

OR die('No connection')

后记。对 mysql_select_db 函数执行相同的操作,显然将其更改为“No DB Select”。

最终,我们将需要更多信息。但是改成mysqli是非常可取的。

哦!并确保您连接的用户的权限没有更改。有时我发现有人使用一个用户帐户连接到 PhpMyAdmin,但在他们的 PHP 代码中使用不同的帐户。这是有问题的,并且最终会导致问题,因为您有时会忘记不同的帐户。

于 2013-01-31T04:39:04.163 回答