Goede avond,


Wat ik probeer is om een simpele zoek functie te maken voor een bepaalde tabel in de database.
Met hier en daar wat zoeken op internet heb ik nu dit


<form action="" method="POST">
<input name="s" value="<?php echo $term; ?>"/>
<input type="submit" value="zoeken" name="submit"/>
</form>

<?php
if(isset($_POST["submit"])){
	$term = $_POST['s'];
	$term = htmlspecialchars($term);
	$term = mysqli_real_escape_string($term);       
	$raw_results = mysqli_query("SELECT * FROM info WHERE ('place' LIKE '%".$term."%')");
	if(mysqli_num_rows($raw_results) > 0){ 
		while($results = mysqli_fetch_array($raw_results)){
        	echo "<p><h3>".$results['place']."</h3></p>";
        }   
	}else{
        echo "No results";
	}
}
?>


in de database heb ik 2 records gemaakt in de kolom place heb ik "Amsterdam en Eindhoven".

Als ik een van beide invul blijf ik toch nog 'No results' krijgen
Rob,

Dit werkt inderdaad zoals ik het had gedacht:)
Maar ik zie dat je shorthand code hebt gebruikt waarmee ik helemaal niet mee bekend ben. Zou je misschien kunnen uitleggen wat er in het script gebeurd bij de shorthands?
Geen idee welke je bedoelt:
<?php
$q = $_GET['q'] ?? null;
//dit is hetzelfde als:
if(isset($_GET['q'])) $q = $_GET['q'];
else $q = null;
//maar ik had er dan nog een trim() omheen


preg_split('/\\s+/',$q)
/*
/\\s+/ is een regular expression
/    / is de afbakening (ander karakter kan ook, dit wordt veel gebruikt - 
       bijvoorbeeld in javascript)
 \\s   dit "matcht" een white-space karakter (spatie, tab, enz); dubbele \\ omdat er 
       dan een enkele overblijft (escapen); een enkele \ gaat vaak goed, maar kan soms 
       fout gaan, daarom doe ik uit gewoonte altijd \\
    +  1 of meer matches (dus niet nul)
deze hele riedel splitst de $q dus op witruimte; 'aa  bb   cc' wordt dus gesplitst 
in ['aa','bb','cc'], waar je met explode(' ',$q) -> ['aa','','','bb','','','','cc']
zou krijgen (merk op dat ik vooraf al een trim() heb gedaan om van white-space aan
begin en eind af te komen).
*/


$sql = 'select * from info' . ($where ? "\nwhere " . implode("\n  and ",$where) : '');
//dit is hetzelfde als:
$sql = 'select * from info';
if($where) $sql .= "\nwhere " . implode("\n  and ",$where);
else $sql .= ''; //maar dit is niet echt noodzakelijk / voegt niks toe
?>

Het scheelt dus meestal wat type werk, of een extra regel.

Zie https://php.net/ternary#language.operators.comparison.ternary

Reageren