Php $data未返回结果
如果从数据库中找到数据,我需要从数据库返回$data,但不幸的是,我的代码无法返回数据 我试图输入不存在的数据,它设法返回错误消息,但如果数据存在,页面将不显示任何内容 我可以知道我在if声明中哪里出错了吗 下面是我的代码,其中包含脚本将执行的$data返回之后的内容Php $data未返回结果,php,pdo,Php,Pdo,如果从数据库中找到数据,我需要从数据库返回$data,但不幸的是,我的代码无法返回数据 我试图输入不存在的数据,它设法返回错误消息,但如果数据存在,页面将不显示任何内容 我可以知道我在if声明中哪里出错了吗 下面是我的代码,其中包含脚本将执行的$data返回之后的内容 $day = $_POST['day']; $month = $_POST['month']; $year = $_POST['year']; $dob = implode('/', array($day,$month,
$day = $_POST['day'];
$month = $_POST['month'];
$year = $_POST['year'];
$dob = implode('/', array($day,$month,$year));
if(isset($_POST['submit'])){
if(empty($_POST['day']) || empty($_POST['month']) || empty($_POST['year'])){
echo "You need to fill in each field.<br /><br /><a href=\"./\" title=\"Fill In Again\">Click here to <b>fill in each field</b> again</a>";
exit;
}
}
//Date that user keyin
$userDate = $dob;
$dateTime = DateTime::createFromFormat('d/m/Y', $userDate);
$myFormat = $dateTime->format('Y-m-d');
//Query string and put it in a variable.
if(isset($_POST['dob_chi'])){
$query = "SELECT * FROM $table_n WHERE dob_chi = :date";
} else {
$query = "SELECT * FROM $table_n WHERE dob_eng = :date";
}
$stmt = $db->prepare($query);
$stmt->execute(array('date' => $myFormat));
$data = $stmt->fetchAll();
if ( !$data ) {
echo 'No data found in database!';
exit;
} else {
return $data=$userDate;
}
//Now we create a while loop for every entry in our DB where the date is match.
while ($row = $stmt->fetchObject()) {
$r1 = $row->rowone;
$r2 = $row->rowtwo;
$r3 = $row->rowthree;
$englishdate = $row->dob_eng;
$chinesedate = $row->dob_chi;
$zodiac = $row->zodiac;
//add all initial data into a matrix variable for easier access to them later
//To access rowone use $rows[0][0], rowtwo $rows[1][0] ect.
//The matrix is an array which contains multiple array. eg. 2-dimensional arrays
//To get all the variables with $r1X simply retrieve the first array of the matrix eg $rows[0]
$rows = array(array($r1),array($r2),array($r3),array());
}
//Similarities between row1 and row2 made me incorporate modulo value as an argument.
function incmod($a, $m){
return ($a % $m) + 1;
}
$day=$\u POST['day'];
$month=$_POST['month'];
$year=$_POST['year'];
$dob=内爆('/',数组($day,$month,$year));
如果(isset($_POST['submit']){
如果(空($_POST['day'])空($_POST['month'])空($_POST['year']){
echo“您需要填写每个字段。
”;
出口
}
}
//用户输入的日期
$userDate=$dob;
$dateTime=dateTime::createFromFormat('d/m/Y',$userDate);
$myFormat=$dateTime->format('Y-m-d');
//查询字符串并将其放入变量中。
如果(isset($_POST['dob_chi']){
$query=“从$table\u n中选择*,其中dob\u chi=:date”;
}否则{
$query=“从$table\u n中选择*,其中dob\u eng=:date”;
}
$stmt=$db->prepare($query);
$stmt->execute(数组('date'=>$myFormat));
$data=$stmt->fetchAll();
如果(!$data){
echo“在数据库中找不到数据!”;
出口
}否则{
返回$data=$userDate;
}
//现在,我们为数据库中日期匹配的每个条目创建一个while循环。
而($row=$stmt->fetchObject()){
$r1=$row->rowone;
$r2=$row->第二行;
$r3=$row->第三行;
$englishdate=$row->dob_eng;
$chinestate=$row->dob_chi;
$zodiac=$row->zodiac;
//将所有初始数据添加到矩阵变量中,以便以后更容易访问它们
//要访问第一行,请使用$rows[0][0],第二行$rows[1][0]等。
//矩阵是一个包含多个数组的数组。例如,二维数组
//要使用$r1X获取所有变量,只需检索矩阵的第一个数组,例如$rows[0]
$rows=数组(数组($r1)、数组($r2)、数组($r3)、数组();
}
//第1行和第2行之间的相似性使我将模值作为参数合并。
函数incmod($a,$m){
回报率($a%$m)+1;
}
谢谢你抽出时间来把电话线关掉:
return $data=$userDate;
while ($row = $stmt->fetchObject()) {
因为它将结束脚本并覆盖$data
变量
更改:
$data = $stmt->fetchAll(PDO::FETCH_OBJ);
然后更改行:
return $data=$userDate;
while ($row = $stmt->fetchObject()) {
致:
您所说的返回是什么意思?一个输出?你得到了什么错误?你的
return
语句结束了函数,因此你在执行循环时从不执行。你是否尝试过使用echo
而不是return
?当你执行$data=$userDate
时,你也在覆盖$data
。调用fetchAll
后不能使用fetchObject
,因为这会获取所有结果。它显示了此错误致命错误:在第30行的C:\xampp\htdocs\jeff\result.php中未定义的类常量“FETCH\u OBJECT”
除此之外,我去掉了行return$data=$userDate
现在只剩下如果(!$data){echo'数据库中找不到数据!';退出;}
对不起,小错误应该是PDO::FETCH_OBJ
。非常感谢!它解决了我整晚的问题!!从他的代码中你可以清楚地看到,他根本不需要任何东西。@YourCommonSense我在对这个问题的评论中说过。他似乎想把对象转换成索引数组,我不想和他争论这个问题,尽管这是错误的。