Estoy tratando de hacer un simple php, sql del motor de búsqueda que se seleccione todo de mi base de datos que es «COMO» la palabra clave (la consulta) y mostrarlo. Sin embargo, no funcionará. Sólo se muestra el texto «problema»(ver la línea 32) y después de las horas de solución de problemas que todavía no puede entender esto.

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Search Engine Test</title>
</head>
<body>
<script language="php">
//Create a database connection
$connection = mysql_connect("*****","*****","*****");   
if (!connection) {
    die ("Please reload page. Database connection failed: " . mysql_error());
}

//Select a databse to use
$db_select = mysql_select_db("*****",$connection);
if (!$db_select) {
    die("Please reload page. Database selection failed: " . mysql_error());
}

//Search Engine
//Only execute when button is pressed
if (isset($_POST['search'])) {
//Filter
//$keyword = trim ($keyword);
echo $keyword;
//Select statement
$search = mysql_query("SELECT * FROM tbl_name WHERE cause_name LIKE '%keyword%'");
//Display
$result = @mysql_query($search);
if (!$result){
echo "problem";
exit();
}


while($result = mysql_fetch_array( $search )) 
 { 
 echo $result['cause_name']; 
 echo " ";
 echo "<br>"; 
 echo "<br>"; 
 }
 $anymatches=mysql_num_rows($search); 
 if ($anymatches == 0) 
 { 
 echo "Nothing was found that matched your query.<br><br>"; 
 }
}
</script>
<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
<input type="text" name="keyword">
<input type="submit" name="search" value="Search">

</body>
</html>
InformationsquelleAutor Tim | 2013-07-26

2 Comentarios

  1. 1

    Intentar cambiar:

    if (isset($_POST['search'])) { //$_POST['search'] just tells that there are a submit-button when submitting (and the name of it)
    //Filter
    //$keyword = trim ($keyword);
    echo $keyword; //You're echoing out value of $keyword which hasn't been set/assigned
    //Select statement
    
    //You're always searching for the word keyword with leading and/or trailing characters
    //You're not searching for a dynamically assigned value which I think is what you want
    $search = mysql_query("SELECT * FROM tbl_name WHERE cause_name LIKE '%keyword%'");
    
    //You're executing an already defined query (assigned in $search)
    $result = @mysql_query($search); //You're suppressing errors, it's bad practice.
    if (!$result){
    echo "problem";
    exit();
    }

    a:

    if (isset($_POST['keyword'])) {
    //Filter
    $keyword = trim ($_POST['keyword']);
    
    //Select statement
    $search = "SELECT * FROM tbl_name WHERE cause_name LIKE '%$keyword%'";
    //Display
    $result = mysql_query($search) or die('query did not work');

    IMPORTANTE!
    <script language="php"> no es válido. Usted debe escribir <?php en el inicio de código php y ?> para acabar con código php.

    ACTUALIZACIÓN:
    Usted también tendrá que cambiar este código:

    while($result = mysql_fetch_array( $search )) 
        { 
        echo $result['cause_name']; 
        echo " ";
        echo "<br>"; 
        echo "<br>"; 
     }
     $anymatches=mysql_num_rows($search); 
     if ($anymatches == 0) 
     { 
         echo "Nothing was found that matched your query.<br><br>"; 
     }
    }

    A:

    while($result_arr = mysql_fetch_array( $result )) 
    { 
    echo $result_arr['cause_name']; 
    echo " ";
    echo "<br>"; 
    echo "<br>"; 
    }
    $anymatches=mysql_num_rows($result); 
    if ($anymatches == 0) 
    { 
       echo "Nothing was found that matched your query.<br><br>"; 
    }
    }

    Al hacer el nuevo código, usted realmente NO debe usar mysql_ funciones*, porque están en desuso. Buscar en PDO o mysqli en su lugar.

    • Cuando he cambiado lo que usted sugiere, que todavía no funciona y simplemente imprima el mensaje de que «no se encontró Nada que coinciden con su consulta»:(. También, PHP mensaje de error diciendo que el «suministra argumento no es válido MySQL result resource» se produjo en ambas líneas 33 y 40. Estas líneas son lo que viene después de su cambio sugerido. La línea 33 es «while($resultado = mysql_fetch_array( $buscar ))» y 40 «$anymatches=mysql_num_rows($buscar);» Probablemente sólo va a tratar de reescribir el código de búsqueda.
    • Nota: Cuando me inicie sesión en phpMyAdmin y ejecutar las consultas SQL en la base de datos para seleccionar todo cuando la causa nombre es como la palabra clave (acabo de escribir la palabra clave) que funciona. Así que sé que el problema no está en la base de datos no funciona o una ausencia de datos en mi tabla.
    • Eso fue por $búsqueda es simplemente una cadena que contiene el sql-declaración y no era el resultado de la consulta. He actualizado mi respuesta, así que usted puede ver lo que tienes que hacer para conseguir que funcione.
  2. 1

    La expansión de su código, podemos ver que:

    $result = @mysql_query($search);

    se convierte en:

    $result = @mysql_query(mysql_query("SELECT * FROM tbl_name WHERE cause_name LIKE '%keyword%'"));

    Que no tiene mucho sentido.

    Cambiar la primera línea:

    $search = "SELECT * FROM tbl_name WHERE cause_name LIKE '%keyword%'"

    o, en lugar de asignar $search un valor a todos, acaba de saltar a la asignación de $result el valor que $search que actualmente tiene.

    EDITAR: para ayudar a explicar:

    Cambiar esta:

    $search = mysql_query("SELECT * FROM tbl_name WHERE cause_name LIKE '%keyword%'");
    //Display
    $result = @mysql_query($search);
    if (!$result){
        echo "problem";
        exit();
    }

    a este:

    $result = mysql_query("SELECT * FROM tbl_name WHERE cause_name LIKE '%keyword%'");
    //Display
    if (!$result){
        echo "problem";
        exit();
    }
    • No sé exactamente a conseguir lo que usted está diciendo (yo soy muy nuevo en esto), porque esto aún no funciona. Gracias por tu respuesta.
    • La gente normalmente cree el SQL (que es la SELECT * FROM tbl_name WHERE cause_name LIKE '%keyword%') y asignarlo a una variable como $search. A CONTINUACIÓN, se crea otra variable, como $result, un asignarle el valor mysql_query($result). En su caso, va a poner un mysql_query() función con otra mysql_query() función, lo cual es incorrecto.
    • Comprobar mi edición de otra explicación.
    • A la derecha, pero después de sacar el $de búsqueda variable en su totalidad, y reetiquetado de la forma que sigue sin funcionar 🙁 Gracias

Dejar respuesta

Please enter your comment!
Please enter your name here