我在名为评估的表格中没有记录
我有一个功能:
function check_assessment_record($p_id, $a_id, $c){
$dataexistsqry="SELECT * FROM assessments WHERE (pupil_id=$p_id && assessblock_id=$a_id)" ;
$resultt = $c->query($dataexistsqry);
if ($resultt->num_rows > 0) {
echo '<p>set $de = true</p>';
$de=TRUE;
}else{
echo '<p>set $de = false</p>';
$de=FALSE;
}
return $de;
$dataexists->close();
}; //end function
我这样称呼函数:
$thereisdata = check_assessment_record($pupil_id, $assessblock_id, $conn);
然而,当我期待FALSE时,我的功能没有打印出来。当有记录时,它会打印出来。
当我在$ thereisdata中得到结果时,我想检查它是否为TRUE或FALSE但是它不起作用。
我看了php manual boolean page,但没有帮助
答案 0 :(得分:1)
您似乎使用函数参数中的变量$c
将数据库连接作为对象传递。这告诉我,通过创建一个类并使用私有属性/变量,您将获益匪浅。此外,您的代码中有许多错误向我显示您要实现的目标,一些错误是您使用错误变量关闭数据库连接的方式,或者如何在return
之后放置关闭连接方法,永远不会达到。
无论如何,我会创建一个数据库类,然后您可以根据需要调用check_assessment_record()
等特定函数。
以下是我将如何重做您的代码:
<?php
class Database {
private $conn;
function __construct() {
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "test";
// Create connection
$this->conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($this->conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
}
function check_assessment_record($p_id, $a_id) {
$sql = "SELECT * FROM assessments WHERE (pupil_id=$p_id && assessblock_id=$a_id)";
$result = $this->conn->query($sql);
if ($result->num_rows > 0) {
echo '<p>set $de = true</p>';
$de = TRUE;
} else {
echo '<p>set $de = false</p>';
$de = FALSE;
}
return $de;
}
function __destruct() {
$this->conn->close();
}
}
$p_id = 1;
$a_id = 2;
$db = new Database();
$record = $db->check_assessment_record($p_id, $a_id);
var_dump($record);
?>
答案 1 :(得分:0)
$aResults = array();
$st = $conn->prepare( $sql );
$st->execute();
while ( $row = $st->fetch() ) {
//do something, count, add to array etc.
$aResults[] = $row;
}
// return the results if there is, else returns null
if(!empty($aResults)){return $aResults;}
如果您不想将结果放入数组中,您只需检查是否返回了一列;
$st = $conn->prepare( $sql );
$st->execute();
if(! $st->fetch() ){
echo 'there is no row';
}
答案 2 :(得分:0)
这是代码
function check_assessment_record($p_id, $a_id, $c){
$dataexistsqry="SELECT * FROM assessments WHERE (pupil_id=$p_id && assessblock_id=$a_id)" ;
$resultt = $c->query($dataexistsqry);
if ($resultt->num_rows > 0) {
echo '<p>set $de = true</p>';
$de=TRUE;
}else{
echo '<p>set $de = false</p>';
$de=FALSE;
}
return $de;
$dataexists->close();
}; //end function
您可以使用if else条件检查返回值
$thereisdata = check_assessment_record($pupil_id, $assessblock_id, $conn);
if($thereisdata){ print_f('%yes data is present%'); }
else{ print_f('% no data is not present %'); }
原因是,某些返回布尔值的函数只包含true值,并将false值视为null,这就是为什么在未找到数据时不打印任何结果的原因。
希望这会对你有所帮助。不要忘记给出您的评论和反馈。