Foros del Web » Programando para Internet » PHP »

NO me ejecuta la sentencia sql, pareciendo ser correcta

Estas en el tema de NO me ejecuta la sentencia sql, pareciendo ser correcta en el foro de PHP en Foros del Web. Hola amig@s, Tengo el siguiente codigo php: Código PHP: <? Error_reporting ( 0 ); $dbhost  =  "****" ; $dbuser  =  "****" ; $dbpasswd  =  "****" ...
  #1 (permalink)  
Antiguo 14/03/2006, 15:12
Avatar de -=ArgoN=-  
Fecha de Ingreso: octubre-2005
Ubicación: Barcelona, España
Mensajes: 843
Antigüedad: 18 años, 6 meses
Puntos: 1
NO me ejecuta la sentencia sql, pareciendo ser correcta (solucionado)

Hola amig@s,
Tengo el siguiente codigo php:

Código PHP:
<?
Error_reporting
(0);
$dbhost "****";
$dbuser "****";
$dbpasswd "****";
$msconnect=mssql_connect($dbhost,$dbuser,$dbpasswd);
$selected=mssql_select_db('ws1'$msconnect);
$dir 'C:\\HB';

$oper1 $_POST['oper1']; //SELECT, UPDATE
$stat $_POST['stat']; //iEK, sLevel...
$table $_POST['table']; //CHARACTER_T, BANKITEM_T, GUILD_T, GUILDMEMBER_T, ITEM_T, SKILL_T
$oper2 $_POST['oper2']; //WHERE, SET
$cond1 $_POST['cond1']; //condition 1
$cond2 $_POST['cond2']; //condition 2
$acc $_POST['acc']; //account
$pass $_POST['pass']; //password
$char $_POST['char']; //character

$fl substr($acc01);
$ascii ord($fl);
$filename $dir '\\Account\\ASCII' $ascii '\\' $acc '.txt';
$lines file($filename);
$a=0;
foreach(
$lines as $a){
    
$a trim($a);
    if(
$a == 'account-password = '.$pass.''){
        
$passflag TRUE;
    }elseif(
$a == 'account-character-WS1  = '.$char.''){
        
$charflag TRUE;
    }
}
if(
file_exists($filename)){
    if(
$passflag){
        if(
$charflag){
            if(isset(
$_POST['manual'])){
                
$query_ $_POST['manual'];
            }else{
                
$query_ "$oper1 $stat FROM $table $oper2 $cond1 = $cond2";
            }
            
/*1*/ echo "&consulta=$query_&";
            
$consulta mssql_query($query_);
            if(
$oper1 == "SELECT"){
                while(
$row mssql_fetch_array($consulta)){
                    
$stats $row[$stat];
                    
/*2*/ echo "&estatus=$stats&";
                }
            }elseif(
$oper1 == "UPDATE") {
                echo 
"&estatus=OK&";
            }
        }else{
            echo 
"&estatus=char_mal&";
        }
    }else{
        echo 
"&estatus=pass_mal&";
    }
}else{
    echo 
"&estatus=acc_mal&";
}
?>
Aparentemente, el echo /*1*/:

Código:
echo "&consulta=$query_&";
habiendo enviado todas las variables me devuelve por ejemplo:

Código:
SELECT sLevel FROM CHARACTER_T WHERE cCharName = ArgoN
en cambio el echo /*2*/:

Código:
echo "&estatus=$stats&";
NO me devuelve NADA
No entiendo porque si la sentencia sql esta bien construida no me devuelve nada... no me lo explico.

Ayuda por favor, seguro que alguien tiene mas vista que yo y lo ve enseguida

Gracias!!

ArgoN

Última edición por -=ArgoN=-; 16/03/2006 a las 14:53
  #2 (permalink)  
Antiguo 14/03/2006, 17:51
Avatar de bistoco  
Fecha de Ingreso: marzo-2006
Mensajes: 141
Antigüedad: 18 años, 1 mes
Puntos: 0
no veo el problema, puede sonar basico pero puede ser ke las variables no lleguen...por eso haz los clasicos y super utiles echo pa ver el array $_POST

foreach($_POST as $key => $value){
echo "<br>$_POST['".$key."']=".$value;
}
  #3 (permalink)  
Antiguo 15/03/2006, 06:54
Avatar de -=ArgoN=-  
Fecha de Ingreso: octubre-2005
Ubicación: Barcelona, España
Mensajes: 843
Antigüedad: 18 años, 6 meses
Puntos: 1
No, el problema no es que no lleguen los valores $_POST, ya que hago el echo de la consulta sql y me los devuelve todos.
Voy a probar con esto cuando pueda: (es el fragmento perteneciente a las consultas)

Código PHP:
<?php
[...]
if(
$charflag){
    if(isset(
$_POST['manual'])){
        
$query_ $_POST['manual'];
    }
    if(
$oper1 == "SELECT"){
        
$query_ "$oper1 $stat $inter $table $oper2 $cond1=$cond2";
        
$consulta mssql_query($query_);
        while(
$row mssql_fetch_array($consulta)){
            
$stats $row[$stat];
            echo 
"&estatus=$stats&";
        }
    }elseif(
$oper1 == "UPDATE") {
        
$query_ "$oper1 $table $inter $stat=$val $oper2 $cond1=$cond2";
        
mssql_query($query_);
        echo 
"&estatus=OK&";
    }
    echo 
"&consulta=$query_&";
}
[...]
?>
Estoy casi seguro que no hace la consulta por cuestion de notacion de comillas y toda esa historia: ",',".,'.,...
Si no me funciona lo de arriba ya no se que mas puedo probar

Gracias

ArgoN

Última edición por -=ArgoN=-; 15/03/2006 a las 17:47
  #4 (permalink)  
Antiguo 15/03/2006, 18:14
Avatar de -=ArgoN=-  
Fecha de Ingreso: octubre-2005
Ubicación: Barcelona, España
Mensajes: 843
Antigüedad: 18 años, 6 meses
Puntos: 1
Ya he probado el anterior codigo y nada de nada. Me devuelve "undefined" el flash
No entra dentro de:

Código:
while($row = mssql_fetch_array($consulta)){
            $stats = $row[$stat];
            echo "&estatus=$stats&";
}
Es como si $row = mssql_fetch_array($consulta) fuera siempre falso o incorrecto
Alguien me puede ayudar por favor?

Adios.
  #5 (permalink)  
Antiguo 16/03/2006, 07:39
Avatar de bistoco  
Fecha de Ingreso: marzo-2006
Mensajes: 141
Antigüedad: 18 años, 1 mes
Puntos: 0
si posteas las consultas ke te genera tu programa , te pudo ver lo de lascomillas
  #6 (permalink)  
Antiguo 16/03/2006, 08:40
Avatar de -=ArgoN=-  
Fecha de Ingreso: octubre-2005
Ubicación: Barcelona, España
Mensajes: 843
Antigüedad: 18 años, 6 meses
Puntos: 1
¿Que quieres decir con las consultas que genera mi programa?
Si te refieres a las consultas sql que hago, el echo de la consulta tal cual me devuelve:

SELECT sLevel FROM CHARACTER_T WHERE cCharName='ArgoN' (poniendo comillas)

SELECT sLevel FROM CHARACTER_T WHERE cCharName=ArgoN (sin ponerlas)

De ninguna de las dos formas me funciona

¿Que puede estar pasando?

Gracias de todos modos,

ArgoN
  #7 (permalink)  
Antiguo 16/03/2006, 08:47
 
Fecha de Ingreso: noviembre-2005
Ubicación: venezulea
Mensajes: 214
Antigüedad: 18 años, 5 meses
Puntos: 0
el campo cCharName de la tabla CHARACTER_T que tipo de dato es???

Numérico, int, varchar
  #8 (permalink)  
Antiguo 16/03/2006, 09:01
Avatar de atak  
Fecha de Ingreso: julio-2005
Ubicación: Huancayo
Mensajes: 490
Antigüedad: 18 años, 9 meses
Puntos: 5
De acuerdo Variables

Hola -=ArgoN=-

Código PHP:
<?php
//  usa  TRIM

$oper2 TRIM($_POST['oper2']); //WHERE, SET
$cond1 =TRIM($_POST['cond1']); //condition 1

......

if(
$oper1 == "SELECT"){
                while(
$row mssql_fetch_array($consulta)){
                    
$stats $row[$stat];
                    
/*2*/ echo "&estatus=$stats&";
                }

?>

Prueba con eso a lo mejor tu variable llega con espacios en blanco.

Salu2

__________________
. .: El mejor Inicio :. .
  #9 (permalink)  
Antiguo 16/03/2006, 09:06
Avatar de -=ArgoN=-  
Fecha de Ingreso: octubre-2005
Ubicación: Barcelona, España
Mensajes: 843
Antigüedad: 18 años, 6 meses
Puntos: 1
Funciona!!

Debia de estar cometiendo algun otro error (lo tipico que corriges una cosa y resulta que no se debe a eso, luego corriges lo que realmente estaba mal y te olvidas de volver a poner bien lo que habias tocado...)

Muchas gracias por los que se han interesado por mi problema.

La opcion correcta era:

SELECT sLevel FROM CHARACTER_T WHERE cCharName='ArgoN' (con la ultima variable entre comillas simples)

Gracias
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 07:29.