我有两个问题:
1。我的复选框值有问题
2. 我的mysql_fetch_array($ variable,ASSOC)有问题;方法 - >我数据库中的所有数据都是VARCHAR类型
1。在“Cb”末尾的所有变量都表示此值来自FORM的复选框。如果选中复选框,则表示该行(例如:用户名)将位于我的数据库的Select方法中(例如:SELECT Username FROM ...)
我收到此错误 1.未定义的索引:第7行的C:\ wamp \ www \ Projet Compte Utilisateur \ manip_liste.php中的fonctionCb 2.未定义的变量:第14行的C:\ wamp \ www \ Projet Compte Utilisateur \ manip_liste.php中的选项卡 ...等等所有复选框如果没有选中 ..这里是我的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_array方法得到了这个错误 错误:警告:mysql_fetch_array()期望参数1为资源,字符串在第68行的C:\ wamp \ www \ Projet Compte Utilisateur \ 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
谢谢大家的回答,并指出我是一名初学者,希望学习......
答案 0 :(得分:2)
也许定义$ tab以及顶部的$ prep将摆脱“Undefined Variable”-error
答案 1 :(得分:2)
对于第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部分的SQL语句中删除了$ prep附近的单引号。
阅读isset()
,但您也可以考虑使用array_key_exists()
。我不确定这两者的相对表现比较。
答案 2 :(得分:0)
至于你的第二个问题,expects parameter 1 to be resource, string given
表示你已经给它一个字符串。在您的代码中,您只需将$querycon
的值设为$querycon = "SELECT '$prep' FROM info_compte WHERE username = '$username'";
即字符串。
您应该为mysql_query
函数分配一个$变量,并将其作为第一个参数用于mysql_fetch_array
方法。
为了完整起见:
要回答您的第一个问题,您的$ tab变量未设置为if
条件失败,因此您尝试连接会抛出错误。