我有两个问题:
一。我对复选框的值有问题
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()
。我不确定两者的相对性能比较。