Php $data未返回结果

Php $data未返回结果,php,pdo,Php,Pdo,如果从数据库中找到数据,我需要从数据库返回$data,但不幸的是,我的代码无法返回数据 我试图输入不存在的数据,它设法返回错误消息,但如果数据存在,页面将不显示任何内容 我可以知道我在if声明中哪里出错了吗 下面是我的代码,其中包含脚本将执行的$data返回之后的内容 $day = $_POST['day']; $month = $_POST['month']; $year = $_POST['year']; $dob = implode('/', array($day,$month,

如果从数据库中找到数据,我需要从数据库返回$data,但不幸的是,我的代码无法返回数据

我试图输入不存在的数据,它设法返回错误消息,但如果数据存在,页面将不显示任何内容

我可以知道我在if声明中哪里出错了吗

下面是我的代码,其中包含脚本将执行的$data返回之后的内容

$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我在对这个问题的评论中说过。他似乎想把对象转换成索引数组,我不想和他争论这个问题,尽管这是错误的。