update语句对我的表没有任何作用

时间:2011-04-20 14:13:36

标签: php sql

我没有错误,我的所有打印声明都告诉我我做得很好,但我在所需列下的字段保持不变。

发生了什么(或者更确切地说没有发生)?

if ($current && $new) {// the validation code is left out


        $sqlTekst = "UPDATE gebruikers SET pasW  = ". $_POST[nieuwPasw] ." WHERE gebruikersNr = ". $_POST[gebruikersNr];
        print 'huidig POST gebruikersNr = $_POST[gebruikersNr]';

// server koppeling
        $db = mysql_connect("localhost", "internet", "geheim");
// database koppeling
        mysql_select_db("site_met_aanmelden", $db)
                or die("Kan database gebruikers niet openen".mysql_error());        
        $resultaat = mysql_query($sqlTekst, $db);
        }   

5 个答案:

答案 0 :(得分:1)

您是否“提交”了数据库更改?

答案 1 :(得分:1)

为实际查询执行添加错误处理
照顾可能的sql注射
检查受影响的行以查看您的WHERE条件是否有效
格式化并缩进你的sql语句,你会得到一个稍微有意义的错误信息
打印您的sql语句,以便检查所有参数 使用$ array ['string']而不是$ array [string]

if ($current && $new) { // the validation code is left out
  $db = mysql_connect("localhost", "internet", "geheim") or die("connect failed. ".mysql_error());
  mysql_select_db("site_met_aanmelden", $db) or die("Kan database gebruikers niet openen".mysql_error());

  $sql_pasW = mysql_real_escape_string($_POST['nieuwPasw'], $db);
  $sql_gebruikersNr = mysql_real_escape_string($_POST['gebruikersNr'], $db);

  $sqlTekst = sprintf("
    UPDATE
      gebruikers
    SET
      pasW='%s'
    WHERE
      gebruikersNr ='%s'
    ", $sql_pasW, $sql_gebruikersNr
  );
  echo 'Debug '.__FILE__.__LINE__.': ', $sqlTekst, "\n"; 
  $resultaat = mysql_query($sqlTekst, $db) or die('query failed: '.mysql_error());

  echo 'affected rows: ', mysql_affected_rows($db);
}

答案 2 :(得分:0)

我认为至少您的$_POST['nieuwPasw']$_POST['gebruikersNr']是字符串,并且您不会在查询中附上'。

您的工作查询将是

$sqlTekst = "UPDATE gebruikers SET pasW  = '". $_POST['nieuwPasw'] ."' WHERE gebruikersNr = '". $_POST['gebruikersNr']."'";

只需替换一个字符串。

如果查询中出现错误,您还可以使用mysql_error 函数获取信息。

添加

if (!$resultaat) {
echo mysql_error();
}

这会在查询期间出现打印错误。

我还建议将数组键包含在叛逆者中(双重或单数 - 并不重要)。

答案 3 :(得分:0)

我会修复如下:

$sqlTekst = "UPDATE gebruikers SET pasW  = '". $_POST["nieuwPasw"] ."' WHERE gebruikersNr = ". $_POST["gebruikersNr"];

假设您的Nr指的是在select中不需要引号的数字。

答案 4 :(得分:0)

尝试这样:

 $sqlTekst = "UPDATE gebruikers SET pasW  = '". $_POST[nieuwPasw] ."' WHERE gebruikersNr = '". $_POST[gebruikersNr]."'";