¿Por qué una consulta desde PHP a MySQL devuelve 0 en vez del valor de la fila?

Tengo el siguiente código:



    
     $lang['state_name_string_1'],
        2 => $lang['state_name_string_2'],
        3 => $lang['state_name_string_3'],
        4 => $lang['state_name_string_4'],
    );
    if (mysqli_connect_errno())
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    } else {
        $sql="SELECT estado FROM tickets WHERE telefono = '".$_POST['consultphone']."' OR imei = '".$_POST['consultimei']."'";
        $query = mysqli_query($db, $sql);
        if ($result=mysqli_query($db,$sql)){
            while($result = mysqli_fetch_array($query)){

                ?>
                

Datos de su pedido

Y el resultado que me imprime es 0, cuando en la tabla hay 2 registros y los dos deberían ser 1

Aquí el resultado directamente desde phpmyadmin:

resultado de consulta con 2 registros valor 1

Y esto es lo que me sale en mi web:

texto con ressultado: 0

Añado el formulario:

Añado el código que me funcionaba a medias antes con este me daba el resultado correcto pero solo una vez:



	
	 $lang['state_name_string_1'],
		2 => $lang['state_name_string_2'],
		3 => $lang['state_name_string_3'],
		4 => $lang['state_name_string_4'],
	);
	if (mysqli_connect_errno())
	{
		echo "Failed to connect to MySQL: " . mysqli_connect_error();
	}
	if (isset($_POST['consultphone']) || isset($_POST['consultimei'])){
		$sql="SELECT * FROM pre_tickets WHERE telefono = '".$_POST['consultphone']."'";
		$query = mysqli_query($db, $sql);
		if ($result=mysqli_query($db,$sql))
			{
				$rowcount=mysqli_num_rows($result);
				if ($rowcount >0){
					while($result = mysqli_fetch_array($query)){
						if($_POST['consultphone'] == $result['telefono']  || $_POST['consultimei'] == $result['imei']){
						?>
						

Datos de su pedido

close(); include("template/footer.php"); ?>

0
задан 02.11.2016, 14:26
3 ответа

Когда ты сделаешь mysqli_fetch_array, перемести его второй параметр MYSQLI_ASSOC таково ты сможешь соглашаться ассоциативной формы на твой array стоимости.

Кроме того я думаю, что у тебя есть ошибка, нужно перемещать его $result, не $query.

Это было бы так:

while($result = mysqli_fetch_array($result, MYSQLI_ASSOC)){

Шрифт: http://www.w3schools.com/php/func_mysqli_fetch_array.asp

1
ответ дан 24.11.2019, 12:46

Попытайся с этим, прочитай комментарии, что я разместил тебя. Консультация работала два раза. Также я рекомендую читать тебе: Как предотвращать вставку SQL в PHP?.

<?php
session_start();
?>
<html>
    <body>
    <?php
    include("template/head.php");
    include("template/mainheader.php");
    include ("db_files/db.php");
    $state = array(
        1 => $lang['state_name_string_1'],
        2 => $lang['state_name_string_2'],
        3 => $lang['state_name_string_3'],
        4 => $lang['state_name_string_4'],
    );
    if (mysqli_connect_errno())
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();

    }else{

      //Se comprueba que se hayan recibido los datos, si no se han recibido, no se continuará la ejecución
      if(isset($_POST['consultphone']) && isset($_POST['consultimei'])){

         //Evitamos inyecciones SQL
         $consultphone = mysqli_real_escape_string($db, $_POST['consultphone']);
         $consultimei = mysqli_real_escape_string($db, $_POST['consultimei']);

         //Consulta SQL con las variables anteriores
      $sql="SELECT estado FROM tickets WHERE telefono = '$consultphone' OR imei = '$consultimei'";

       //Ejecutamos la consulta 1 sola vez, antes se hacia 2 veces.
      $query = mysqli_query($db, $sql);

       // Si hay resultados se muestran, sino se imprime mensaje de que no hay registros.
        if (mysqli_num_rows($query)!=0){
            while($result = mysqli_fetch_array($query)){

                ?>
                <div class="content container" style="margin-bottom:100px">
                    <center><h3>Datos de su pedido</h3></center>
                    <div class="row main-content">
                        <label>Estado del pedido</label>
                        <?php 
                        echo $result['estado'];
                        ?> 
                    </div>
                </div>
                <?php

                }

            } else {
                    echo "no hay registros para su busqueda";
            }
        mysqli_close($db);


      }

    }
    include("template/footer.php");
    ?>
    </body>
</html>
0
ответ дан 24.11.2019, 12:46
  • 1
    У меня выходит тот же результат... –  Pavlo B. 02.11.2016, 13:50
  • 2
    #191; у Тебя выходит сообщение " нет реестров для Ваш busqueda"? –  AntoTGa 02.11.2016, 14:11
  • 3
    Нет, просто у меня выходит результат 0 и уже est и # 225;... –  Pavlo B. 02.11.2016, 14:24
  • 4
    Я заканчиваюсь в и # 241; adir c и # 243; я говорю, что оно функционировало посредственно хорошо, с этим c и # 243; я говорю, что выходил хорошо результат, но только выйди и # 237; в 1 вместо двух, которые есть. –  Pavlo B. 02.11.2016, 14:27

Доказательство print_r($result);die(); посмотрим он дает тебе какой-то отпечаток.

prueba2:

$sql="SELECT * FROM pre_tickets WHERE telefono = '".$_POST['consultphone']."'";
print_r($sql);die();

И прицел, который должен видеть, как формируется query.

0
ответ дан 24.11.2019, 12:46
  • 1
    это - то, что выходит: Array ([0] = > 0 [состояние] = > 0) –  Pavlo B. 02.11.2016, 14:09
  • 2
    @PavloB. Сноп один начал консультации и прицел посмотрим на самом деле должен возвращать данные эта консультация прямо в базе данных. –  Francisco Romero 02.11.2016, 14:29
  • 3
    он дает мне, что ты не посылаешь хорошо параметры со страницы, пытается в $sql = и quot; SELECT * FROM pre_tickets WHERE телефон = и #39; ". $ _POST [и #39; consultphone и # 39;]. " и #39; "; –  user2402794 02.11.2016, 16:10
  • 4
    print_r ($sql); die (); под предыдущей линией и посмотри посмотрим формируется хорошо консультация. –  user2402794 02.11.2016, 16:11

Теги

Похожие вопросы