几个小时我正努力做到这一点。 好吧我在第一种情况下有两种语言在url中没有变量吗?lang =它是基本语言和检查语言变量lang的函数,Do,如果url中的变量存在,无论其值是什么,设置全局变量$ lang到“en”else为NULL。现在我进入数据库我有列郎,我现在需要从中获取数据。公共变量if为true表示我需要获得所有主题为pulic且在数据库列中“可见”值为2.如果不可见而不是值为1.
获取所有项目,如果公开== false&& lang!= null如果列lang中的值为“en”,则获取所有项目。这就是我所需要的一切。但神秘的是它不起作用。 我的代码。
function get_all_subjects($public = true,$lang = NULL){
$db = connect_db();
$query = "SELECT * ";
$query .= "FROM subjects ";
if($public && $lang == NULL){
$query .= "WHERE visible =:visible ";
$query .= "AND WHERE lang =:lang ";
}elseif($public && $lang != NULL){
$query .= "WHERE visible =:visible ";
$query .= "AND WHERE lang =:lang ";
}elseif(!$public && $lang != NULL){
$query .= "WHERE lang =:lang ";
}elseif(!$public && $lang == NULL){
$query .= "AND WHERE lang =:lang ";
}
$stmt = $db->prepare($query);
if($public && $lang == NULL){
$stmt->bindValue(':visible', 2, PDO::PARAM_INT);
$stmt->bindParam(':lang',$lang, PDO::PARAM_STR);
}elseif($public && $lang != NULL){
$stmt->bindValue(':visible', 2, PDO::PARAM_INT);
$stmt->bindParam(':lang',$lang, PDO::PARAM_STR);
}elseif(!$public && $lang != NULL){
$stmt->bindParam(':lang',$lang, PDO::PARAM_STR);
}elseif(!$public && $lang == NULL){
$stmt->bindParam(':lang',$lang, PDO::PARAM_STR);
}
if($stmt->execute()){
return $stmt;
}else{
return NULL;
}
}
我认为有必要放入NOT IN:lang或<>:lang或!=但我现在还没有......没有什么能帮到我的头疼,我很累。
编辑。只能在“en”中使用public和!public“versions”。在基本语言中public = true和public = false我得到了错误致命错误:在我调用此函数的其他函数中的非对象上调用成员函数fetch()。在第2行
我想我知道..我不需要,首先如果声明:lang。但是怎么样?
$all_subjects = get_all_subjects($public,$lang);
$subject = $all_subjects->fetch(PDO::FETCH_ASSOC)
答案 0 :(得分:0)
解决。 一点研究mysql
function get_all_subjects($public = true,$lang = NULL){
$db = connect_db();
$query = "SELECT * ";
$query .= "FROM subjects ";
if($public && $lang == NULL){
$query .= "WHERE NOT lang =:lang ";
$query .= " AND visible =:visible ";
}elseif($public && $lang != NULL){
$query .= "WHERE visible =:visible ";
$query .= "AND lang =:lang ";
}elseif(!$public && $lang != NULL){
$query .= "WHERE lang =:lang ";
}elseif(!$public && $lang == NULL){
$query .= " WHERE NOT lang =:lang ";
}
$stmt = $db->prepare($query);
if($public && $lang == NULL){
$stmt->bindValue(':visible', 2, PDO::PARAM_INT);
$stmt->bindValue(':lang','en', PDO::PARAM_STR);
}elseif($public && $lang != NULL){
$stmt->bindValue(':visible', 2, PDO::PARAM_INT);
$stmt->bindParam(':lang',$lang, PDO::PARAM_STR);
}elseif(!$public && $lang != NULL){
$stmt->bindParam(':lang',$lang, PDO::PARAM_STR);
}elseif(!$public && $lang == NULL){
$stmt->bindValue(':lang','en', PDO::PARAM_STR);
}
if($stmt->execute()){
return $stmt;
}else{
return NULL;
}
}