[英]I can't get the output to show from an array PHP SQL
注意:我知道我的代码的滚动条看起来很疯狂,如果您滚动到底部,您将看到我尝试输出代码的位置。
我正在尝试输出选择查询搜索的结果。 我已经在独立的php文件中成功检索了满足WHERE条件的结果。 没有嵌入前端代码。
在我的网站设计中,我在<!DOCTYPE HTML>
部分的顶部具有主要的<?php ?>
<!DOCTYPE HTML>
部分。 然后,在前端代码中,从顶部的主要<?php ?>
部分回显某些部分。
我在这里错过了一些东西,因为我无法使它正常工作。 我尝试了各种尝试。
这是一个独立的php文件的输出
2015年1月5日样本3
2015年1月5日样本2
2015年1月5日样本
如果尚未使用isset,我希望在搜索结果框中使用它。
这是界面的照片(如果有帮助的话),它实际上是一个文本输入字段和一个“搜索”发布按钮,其结果显示在下面。
http://www.parsemebro.com/search.jpg
ob_start();
session_start();
mysqli_report(MYSQLI_REPORT_OFF);
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
error_reporting(-1);
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
if($_SERVER['REQUEST_METHOD']=='POST'){
$errors = array();
if (empty($_POST['keyphrase'])) {
$errors['keyphrase'] = "Search field is empty";
} else {
$keyphrase = test_input($_POST['keyphrase']);
}
if(empty($errors)){
$userrname = $_SESSION["user"];
$keyphrase = test_input($_POST['keyphrase']);
$servername = " ";
$username = " ";
$password = " ";
$dbname = " ";
$link = new mysqli("$servername", "$username", "$password", "$dbname");
$stmt=$link->prepare('SELECT stratoparse,date FROM stock WHERE user=? AND keyphrase=? ORDER BY ID DESC');
$stmt->bind_param('ss',$userrname,$keyphrase);
$stmt->execute();
$stmt->store_result();
$num_rows = $stmt->num_rows;
global $num_rows;
$stratoparse=null;
$date=null;
$stmt->bind_result($stratoparse,$date);
$rows2 = array();
$rows3 = array();
while($stmt->fetch()){
$rows2[] = $stratoparse;
$rows3[] = $date;
}
$search = array();
for($i=0;$i<=$num_rows;$i++){
$search[]=$rows3[$i].' '.$rows2[$i].'<br>'.'<br>';
}
$_SESSION['status_message'] = "search results displayed below";
$host = $_SERVER['HTTP_HOST'];
$uri = $_SERVER['REQUEST_URI']; // the path/file?query string of the page
header("Location: http://$host$uri");
exit;
$link->close();
}
}
?>
<!DOCTYPE HTML>
<head>
<style>
</style>
</head>
<body>
<?php
if(isset($_SESSION['status_message'])){
echo '<font color="white" size="30%">'.htmlspecialchars($_SESSION['status_message']).'</font>'.' ';
unset($_SESSION['status_message']); // clear the message
}
?>
<span><span class="errors"><?php echo isset($errors['keyphrase'])? $errors['keyphrase']:""; ?></span>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<input type="text" name="keyphrase" value="<?php echo isset($keyphrase)? $keyphrase:"";?>" placeholder="keyphrase"><input type="submit" value="search"></span>
</form>
<textarea name="result" placeholder="search results">
**THIS IS WHERE I WANT TO OUTPUT THE ARRAY RESULTS**
<?php echo isset($search)?$search:"";?>
<?php
for($i=0;$i<=(isset ($num_rows)?$num_rows:"");$i++){
echo isset($search[$i])?$search[$i]:"".'<br>'.'<br>';
}
for($i=0;$i<=(isset ($num_rows)?$num_rows:"");$i++){
echo (isset($rows3[$i])?$rows3[$i]:"").' '.(isset($rows2[$i])?$rows2[$i]:"").'<br>'.'<br>';
}
?>
</textarea>
</body>
要输出Array类型,例如$ search [],则需要使用var_dump($ search)。 然后,您应该看到一些输出。 但是除非您对其进行迭代并连接一个字符串,否则它将很丑陋。
要遍历数组并使用".="
连接成字符串
$output = "";
for( $i = 0; $i < count($search); $i++){
$output .= "Search result: " . $i . "\n";
$output .= $search[$i] . "\n";
};
然后不回显,只需在HTML元素内使用<?=$string?>
。
<textarea name="result" placeholder="search results">
<?=$output?>
</textarea>
在开始遍历$ search之前,请测试是否设置了$ search。
旁注:在HTML中,您可以使用<?=$variableName?>
作为语法,而不是<?php ... ?>
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.