Mysqli_query()INSERT INTO不起作用

时间:2016-10-16 00:40:01

标签: php mysql database-connection insert-into

有人能帮帮我吗?我不知道为什么这个“INSERT INTO”查询不起作用。随着回声似乎一切都好。

代码中的echo似乎返回正确的查询,但我不知道查询为什么不执行...

谢谢!

<?php

    $passCifrado=md5($_POST['pass']);


    $conexion=mysqli_connect('localhost', 'root','','redsocial') or die("oh no, problemas tecnicos");



    $resultadoConsulta=mysqli_query($conexion,"select * from usuarios where nick= '".$_POST['nick']."' or correo= '".$_POST['correo']."'");



    $fila=mysqli_fetch_assoc($resultadoConsulta);

    if($fila==null)
    {


        $consulta2="insert into usuarios (nick,password,nombre,apellidos,direccion,telefono,correo,foto) VALUES ('".$_POST['nick']."','".$passCifrado."','".$_POST['nombre']."','".$_POST['apellidos']."','".$_POST['direccion']."',".$_POST['telefono'].",'".$_POST['correo']."',NULL);";

        echo $consulta2;

        if(mysqli_query($conexion,$consulta2))
        {
            echo "registro insertado!";                 
        }


    }
    else
    {
        echo "El registro ya existe";

    }



    mysqli_free_result($resultadoConsulta);


    mysqli_close($conexion);



?>

echo的返回码是:

insert into usuarios (nick,password,nombre,apellidos,direccion,telefono,correo,foto) VALUES ('myNick_String','81dc9bdb52d04dc20036dbd8313ed055','myName_String','mySurname_String','myAddress_String',94438,'xxx@xmail.com_Str',NULL);

所有字段都是VARCHAR,除了“telefono”,即INT。 “foto”可以为NULL。

当然这只是一个测试练习,这就是为什么root没有通过,所以:)

编辑:

我已经解决了!由于我无法添加任何答案,我编辑通知感谢this answer,在@Drew的链接中给出,我发现问题是,我的密码字段是varchar(30 ),而md5加密设置的varchar长度超过30 ...所以我用一个alter table解决了它,并将数据类型更改为更长的varchar。

感谢所有人,我学到了许多重要的基本知识;所以,再次感谢大家。像你这样的人使这个网站变得很棒。

1 个答案:

答案 0 :(得分:0)

您的问题是格式错误,请务必记住所有引号...

你的价值:

$consulta2="insert into usuarios (nick,password,nombre,apellidos,direccion,telefono,correo,foto) VALUES ('".$_POST['nick']."','".$passCifrado."','".$_POST['nombre']."','".$_POST['apellidos']."','".$_POST['direccion']."',".$_POST['telefono'].",'".$_POST['correo']."',NULL);";
/*                                                                                                                                                                                                                          ^                    ^*/

固定值:

$consulta2="insert into usuarios (nick,password,nombre,apellidos,direccion,telefono,correo,foto) VALUES ('".$_POST['nick']."','".$passCifrado."','".$_POST['nombre']."','".$_POST['apellidos']."','".$_POST['direccion']."','".$_POST['telefono']."','".$_POST['correo']."',NULL);";

编辑:为什么我需要这些整数的引号?

永远值需要引号,即使它是一个整数,如果你上传NULL也不需要引号。数据库仍然会将其作为整数处理,但需要引号来了解要发送的值。当数据库收到它将存储的值时,它将作为“预期”值,例如字符串或整数。

编辑:示例

$query = "INSERT INTO table (id, username, password) VALUES (NULL, '$_POST[username]', '".md5($_POST['password'])."')";
// This will be a correct query :)

$query = "INSERT INTO table (id, username, password) VALUES (1, '$_POST[username]', '".md5($_POST['password'])."')";
// This will be an incorrect query :(

$query = "INSERT INTO table (id, username, password) VALUES ('1', '$_POST[username]', '".md5($_POST['password'])."')";
// This will be a correct query :)