【问题标题】:PHP & SQL problemPHP & SQL 问题
【发布时间】:2011-02-25 23:12:45
【问题描述】:

我的函数 db_modif(); 有问题。每次,如果值正确且存在,则消息是第一个(if 条件)。

echo "Il n'y a aucun compte au nom de: ".$username." au site: ".$site." dans la base de données";

所以,我的数据库中没有修改 这是我的操作代码:

<?php
  $username = $_POST["user_search"];
  $site = $_POST["adr_search"];
  $fonction = $_POST["fonction"];
  $modif = $_POST["modif_value"];

  $prep ="";

  if(!$username)
    echo 'Nom d\'utilisateur manquant..';
  elseif(!$site)
    echo 'Site manquante..';
  else{
    require("db_action.php");   //Require in the database connection.
    $bd = db_open();                // Open DATABASE

    if($fonction == "usernameOp")
      $prep = "username";
    if($fonction == "adresseOp")
      $prep = "adresse";
    if($fonction == "passwdOp")
      $prep = "password";
    if($fonction == "siteOp")
      $prep = "siteWeb";
    if($fonction == "fonctionOp")
      $prep = "fonction";

    db_modif($prep, $username, $site, $modif);
    db_close($bd);
  }//ELSE

从函数db_modif();:

function db_modif($prep, $username, $site, $modif){

  error_reporting(-1);  //Activer le rapport de toutes les genres d'erreurs

  $querycon = "UPDATE info_compte SET $prep = '$modif' WHERE username = '$username' AND siteWeb = '$site'";
  if($response = mysql_query($querycon) or trigger_error(mysql_error())){
    echo "<pre>";
    echo "Il n'y a aucun compte au nom de: <b>".$username."</b> au site: <b>".$site."</b> dans la base de données";
    echo "</pre>";
  }
  else{
    mysql_query($querycon);
    echo "<pre>\n";
    echo "Le compte <b>".$username."</b> du site : <b>".$site."</b> a été supprimé avec succès\n";
    echo "</pre>";
  }//ELSE
}//db_modif

【问题讨论】:

    标签: php sql html database


    【解决方案1】:

    在这一行将AND WHERE 更改为AND

    $querycon = "UPDATE info_compte SET $prep = '$modif'
                 WHERE username = '$username'
                 AND WHERE siteWeb = '$site'";
    

    我建议你以后使用 mysql_error() 来帮助调试这类问题。

    $response = mysql_query($querycon) or trigger_error(mysql_error());
    

    如果这些变量中的任何一个可以包含引号,您也可能存在 SQL 注入漏洞。考虑将 mysql_real_escape_string 或 PDO 与准备好的语句一起使用。

    【讨论】:

    • 我用的是你的$response = mysql_query($querycon) or trigger_error(mysql_error());,但还是一样
    • @HulkThor:你改错了。你还没有修复我提到的错误。你应该检查mysql_affected_rows 的值,而不是$response 的值。
    • 我应该如何使用它?对不起,我在我的脚本上修改它而不是我的答案..我编辑它
    • 还是同一个问题 --> 为什么出现第一个(if condition)
    • 您应该检查 mysql_affected_rows 的值,而不是 $response 的值。
    猜你喜欢
    • 2020-05-17
    • 2011-07-29
    • 2011-10-12
    • 2020-05-07
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多