代码中的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。
编辑:
我已经解决了!由于我无法添加任何答案,我编辑通知感谢this answer,在@Drew的链接中给出,我发现问题是,我的密码字段是varchar(30 ),而md5加密设置的varchar长度超过30 ...所以我用一个alter table解决了它,并将数据类型更改为更长的varchar。
感谢所有人,我学到了许多重要的基本知识;所以,再次感谢大家。像你这样的人使这个网站变得很棒。
答案 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 :)