问题
我正在创建一个搜索,允许用户查看编号是否是素食主义者,但无论我搜索的是什么,我只是在搜索编号时打印素食主义者。我希望它打印出数据库中'vegan'列中的内容。
代码
<?php
// Connecting, selecting database
$dbconn = pg_connect("host=***** port=*****
dbname=***** user=***** password=*****")
or die('Could not connect: ' . pg_last_error());
//collect
if(isset($_POST['search'])) {
$searchq = $_POST['search'];
// $searchq = preg_replace("#[^0-9a-z]#i"."".$searchq);
// Performing SQL query
$query = "SELECT vegan FROM enumbers WHERE code LIKE '%$searchq%'";
$ret = pg_query($dbconn, $query);
if(!$ret){
echo pg_last_error($dbconn);
exit;
}
$output = '';
while($row = pg_fetch_assoc($ret)){
$code = $row['code'];
$name = $row['name'];
$type = $row['type'];
$vegan = $row['vegan'];
$output .= '<div> '.vegan.' ';
}
}
pg_close($dbconn);
?>
答案 0 :(得分:2)
您永远不会定义变量名vegan
但想要使用它吗? (如果行$output .= '<div> '.vegan.' ';
上有拼写错误(错过$?)
设置后,您永远不会在$output
中推送任何数据。
应该更像是:
$output = ''; // there you define it
while($row = pg_fetch_assoc($ret)){
$code = $row['code'];
$name = $row['name'];
$type = $row['type'];
$vegan = $row['vegan'];
// here you concatenate data
$output .= "<div>$code / $name / $type / $vegan</div>";
}
echo"Vegan : $output"; // do we have all data ?
$searchq
永远不会在你的代码中被控制和消毒。
从不信任来自输入的用户数据!
你应该真的考虑使用PPS : Prepared Parameterized Statements。这将有助于Preventing SQL injection