从SQL Server检索结果集时出现问题

时间:2017-05-31 18:56:33

标签: php sql-server drupal drupal-7

大家好我所有我在php中做一个表格,因为drupal我有一个文本框和一个按钮,代码输入(varchar),这与执行验证时sqlserver中的记录进行比较输入的代码在DB中存在的表单中,使用存储过程执行iframe。

这是代码,我想我正在做错误的PHP代码并选择它,因为输入查询值的时刻不会生成文本“没事”或“查询的数字不存在”在他发现

我感谢那些告诉我帮助和指导的人

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Buscador php</title>
<form method="POST" action="" onSubmit="return validarForm(this)">

    <input type="text" placeholder="Buscar usuario" name="palabra">

    <input type="submit" value="Buscar" name="buscar">

</form>
</meta>


 <script type="text/javascript">
    function validarForm(formulario) 
    {
        if(formulario.palabra.value.length==0) 
        { //¿Tiene 0 caracteres?
            formulario.palabra.focus();  // Damos el foco al control
            alert('Debes rellenar este campo'); //Mostramos el mensaje
            return false; 
         } //devolvemos el foco  
         return true; //Si ha llegado hasta aquí, es que todo es correcto 
     }   
</script>
    </html>
</head>
<?php
//si existe una petición  
if($_POST['buscar']) 
{   

$usuario= '';
$pass = '';
$servidor = ''; 
$basedatos = '';
$info = array('Database'=>$basedatos, 'UID'=>$usuario, 'PWD'=>$pass); 
$conexion = sqlsrv_connect($servidor, $info);  
if(!$conexion){

 die( print_r( sqlsrv_errors(), true));

 }

echo 'Conectado';


$buscar = $_POST["palabra"];

$arrojado = sqlsrv_query("SELECT ID from Venta 
where ID like '%buscar%'",$conexion) or 
die("Problemas en el select:".sqlsrv_error()); 
?>
//$resultado = sqlsrv_fetch_array($arrojado); 

<?php
$valor = $resultado['aleatoria']; //LE ASIGNAMOS UNA VARIABLE AL RESULTADO DE LA CONSULTA 

//COMPARAMOS CON UNA CONDICIONAL 

if($arrojado == $buscar){ 
echo"todo bien";

} 
else { 
echo "El numero consultado no existe"; 
?>

1 个答案:

答案 0 :(得分:1)

首先,你应该阅读这个问题的答案:How to get useful error messages in PHP?这会给你带来很多麻烦。

您正在尝试将数据库结果与字符串进行比较,但这不起作用:

$buscar = $_POST["palabra"];
...
$arrojado = sqlsrv_query("...");
...
if($arrojado == $buscar) {
...
}

您还以错误的顺序将参数传递给sqlsrv_query(),并且在代码末尾缺少2个结束括号,在echo语句后缺少空格。

您需要从结果集中获取行,然后从中获取第一个条目:

<?php
if($_POST['buscar']) {

    $usuario= '';
    $pass = '';
    $servidor = ''; 
    $basedatos = '';
    $info = array('Database'=>$basedatos, 'UID'=>$usuario, 'PWD'=>$pass); 
    $conexion = sqlsrv_connect($servidor, $info);  
    if(!$conexion){
        die( print_r( sqlsrv_errors(), true));
    }
    echo 'Conectado';

    $buscar = $_POST["palabra"];

    $arrojado = sqlsrv_query($conexion, "SELECT `ID` FROM Venta WHERE `ID` LIKE '%buscar%'");
    if (!$arrojado) {
        die("Problemas en el select:".sqlsrv_error());
    }
    $row = sqlsrv_fetch_array($arrojado, SQLSRV_FETCH_ASSOC);

    //COMPARAMOS CON UNA CONDICIONAL 
    if($arrojado["ID"] == $buscar){
        echo "todo bien";
    } else { 
        echo "El numero consultado no existe";
    }
}
?>