我有两个问题:
一。我对复选框的值有问题
2。mysql_fetch_数组($variable,ASSOC)有问题;方法-->数据库中的所有数据都是VARCHAR类型
一。所有结尾为“Cb”的变量都表示此值来自表单的复选框。如果选中复选框,则表示该行(例如:Username)将位于我的数据库的Select方法中(例如:Select Username FROM…)
我收到这个错误
一。未定义的索引:第7行C:\ wamp\www\Projet Compte utiliateur\manip_liste.php中的fonctionCb
2。未定义的变量:第14行C:\ wamp\www\Projet Compte utilateur\manip_liste.php中的tab
…等等,如果没有选中的话。。这是我的PHP代码

<?php
$prep = "";

if(!$_POST['username'])
    echo 'Nom d\'utilisateur manquant';

if(($_POST["userCb"]) && ($_POST["suffixeCb"]) && ($_POST["fonctionCb"]) && ($_POST["passwordCb"])){
    $prep = " * ";
    $tab = "User    SUFFIXE     SITE    FONCTION    PASSWD";
}
else{
        if($_POST["userCb"]){
            $prep += "username ,";
            $tab += "USER   ";
        }
        if($_POST["suffixeCb"]){
            $prep += "suffixe ,";
            $tab += "SUFFIXE    ";
        }
        if($_POST["passwordCb"]){
            $prep += "password ,";
            $tab += "PASSWD ";
        }
        if($_POST["siteCb"]){
            $prep += "siteWeb ,";
            $tab += "SITE   ";
        }
        if($_POST["fonctionCb"]){
            $prep += "fonction ";
            $tab += "Fx ";
        }
    }//ELSE

require("db_action.php");   //Require in the database connection.
$bd = db_open();
$data = db_select($prep,  $_POST["username"]); //Envoie des variables à afficher et du Username pour le SELECT

echo "'$tab'";
echo "'$data'";    ?>

2。第二个错误
我还从fetch_数组方法得到了这个错误
错误:警告:mysql_fetch_array()期望参数1是资源,在第68行的C:\wamp\www\Projet Compte utiliteur\db_action.php中给出的字符串
这是我方法的代码
function db_select($prep, $username){

        $querycon = "SELECT '$prep' FROM info_compte WHERE username = '$username'";
        if(!mysql_query($querycon)){
            echo "Il n\'y a aucun '$username' dans la base de données";
            $response = "";
        }
        else{
                while ($row = mysql_fetch_array(mysql_query($querycon), MYSQL_ASSOC))
                    printf("%s  %s  %s  %s  %s", $row["username"], $row["suffixe"], $row["password"], $row["siteWeb"], $row["fonction"]);  //The PRINTF dont work
            }

        return $response;
}//db_select

谢谢大家的回答,我明确表示,我是一个练习初学者,想学习。。

最佳答案

对于第1部分,一个问题是$prep结尾可能有一个逗号,这取决于您最终选择的列。要解决这个问题,请尝试下面的代码(注意,我在列名周围添加了反勾号,这是一个好的实践,但不是必需的)。isset()函数检查变量是否实际存在。目前,您正在尝试访问可能不存在的变量,因此会出现错误。

<?php
$prep = array();
$tab = '';

if(!isset($_POST['username']))
    echo 'Nom d\'utilisateur manquant';

if(isset($_POST["userCb"]) && isset($_POST["suffixeCb"]) && isset($_POST["fonctionCb"]) && isset($_POST["passwordCb"])){
    $prep[] = "*";
    $tab = "User    SUFFIXE     SITE    FONCTION    PASSWD";
}
else{
        if(isset($_POST["userCb"])){
            $prep[] = "`username`";
            $tab .= "USER   ";
        }
        if(isset($_POST["suffixeCb"])){
            $prep[] = "`suffixe`";
            $tab .= "SUFFIXE    ";
        }
        if(isset($_POST["passwordCb"])){
            $prep[] = "`password`";
            $tab .= "PASSWD ";
        }
        if(isset($_POST["siteCb"])){
            $prep[] = "`siteWeb`";
            $tab .= "SITE   ";
        }
        if(isset($_POST["fonctionCb"])){
            $prep[] = "`fonction`";
            $tab .= "Fx ";
        }
    }//ELSE

// This line glues the pieces of the $prep array back together
$prep = implode(',', $prep);

require("db_action.php");   //Require in the database connection.
$bd = db_open();
$data = db_select($prep,  $_POST["username"]); //Envoie des variables à afficher et du Username pour le SELECT

echo "'$tab'";
echo "'$data'";    ?>

对于第2部分的错误,必须将mysql_query的返回值赋给一个变量,并将其传递给mysql_fetch_array。你不只是把查询字符串传给它。试试这个:
function db_select($prep, $username){
        $username = mysql_real_escape_string($username);
        $querycon = "SELECT $prep FROM info_compte WHERE username = '$username'";
        $response = mysql_query($querycon);
        if(!$response){
            echo "Il n\'y a aucun '$username' dans la base de données";
            $response = "";
        }
        else{
                while ($row = mysql_fetch_array($response, MYSQL_ASSOC))
                    foreach($row as $item)
                    {
                        echo $item.' ';
                    }
                }

        return $response;
}//db_select

更新:
注意,除了第1部分的大量添加之外,我还删除了第2部分中you SQL语句中$prep周围的单引号。
阅读isset(),但也可以考虑使用array_key_exists()。我不确定两者的相对性能比较。

07-24 19:26
查看更多