Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] You have an error in your SQL syntax; check the manual that corresponds to your MySQL

Estas en el tema de You have an error in your SQL syntax; check the manual that corresponds to your MySQL en el foro de PHP en Foros del Web. Me sale este error y la verdad no encuentro el error, si alguien me pudiese ayudar. Es para un login sencillo. Gracias de antemano. Error ...
  #1 (permalink)  
Antiguo 30/04/2014, 06:32
Avatar de angelosada  
Fecha de Ingreso: abril-2014
Mensajes: 2
Antigüedad: 10 años, 6 meses
Puntos: 0
Pregunta You have an error in your SQL syntax; check the manual that corresponds to your MySQL

Me sale este error y la verdad no encuentro el error, si alguien me pudiese ayudar. Es para un login sencillo.
Gracias de antemano.

Error
" You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '±a FROM usuarios' at line 1 "

Código

Código:
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

mysql_select_db($database_localhost_fm, $localhost_fm);
$query_Recordset1 = "SELECT usuario, contraseña FROM usuarios";
$Recordset1 = mysql_query($query_Recordset1, $localhost_fm) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>
<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start();
}

$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset($_POST['username'])) {
  $loginUsername=$_POST['username'];
  $password=$_POST['password'];
  $MM_fldUserAuthorization = "";
  $MM_redirectLoginSuccess = "index.php";
  $MM_redirectLoginFailed = "login-funcion.php";
  $MM_redirecttoReferrer = false;
  mysql_select_db($database_localhost_fm, $localhost_fm);
  
  $LoginRS__query=sprintf("SELECT usuario, `contraseña` FROM usuarios WHERE usuario=%s AND `contraseña`=%s",
    GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "-1")); 
   
  $LoginRS = mysql_query($LoginRS__query, $localhost_fm) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
     $loginStrGroup = "";
    
	if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}
    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup;	      

    if (isset($_SESSION['PrevUrl']) && false) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];	
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
}
?>
  #2 (permalink)  
Antiguo 30/04/2014, 06:45
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: You have an error in your SQL syntax; check the manual that corresponds to

Yo juraria que tienes un problema de codificación de los nombres de los campos. '±a FROM usuarios' esto ± es la ñ de contraseña mal codificada.

Hay forma de solucionarlo para que puedas usar la ñ, pero un consejo NO USES caracteres raros (para el inglés) en los nombres de bbdd, tablas, campos, indices, etc.

Que problema tienes en que el nombre interno del campo sea contrasena? Solo lo verás tu y te ahorraras problemas.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 30/04/2014, 06:49
Avatar de angelosada  
Fecha de Ingreso: abril-2014
Mensajes: 2
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: You have an error in your SQL syntax; check the manual that corresponds to

Vale, si es que estoy tonto. Para usar la ñ tendría que cambiar la codificación del mysql.

Gracias, si no fuera por ti creo que estaría bastante tiempo buscando esa tantería.

Etiquetas: mysql, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:53.