【问题标题】:MySQLi update and die(); and exit(); not workingMySQLi 更新和 die();和退出();不工作
【发布时间】:2013-12-22 12:00:39
【问题描述】:

我正在尝试用 MySQLi 替换我的 MySQL,并且我得到了结果 - 没关系,但是在更新 MySQL 时我的代码失败了(我只更新了 MySQL 部分)

inc_mysql_connect.php

$db = mysqli_connect($host, $user, $pass, $dbase) or die (); 

inc_global_functions.php

if($_POST['costAlertTrue'] != "") {

// CHECKS AND IF ERROR - REDIRECT BACK
if(..) {$_SESSION['status'] ="E1"; header("Location: ./?page=cAlert"); exit();}
if(..) ...

// SQL
$sql = "UPDATE ".$dbprfx."_users SET costAlertVar = ? WHERE connection = ?";
$eintrag = $db->prepare($sql);
if ($eintrag->error()) { print($eintrag->error()); }
$eintrag->bind_param('ss',$costAlertVar,$userConnection);
$eintrag->execute();
$eintrag->close();

// REDIRECT 
$_SESSION['status'] ="on"; header("Location: ./?page=cAlert");

} // End

任何人都可以在这段代码中找到错误吗?

通知

if($_POST['costAlertTrue'] != "") {
die('XX'); exit('XX');
}

似乎 die();出口();或任何其他错误在 if 子句中不起作用

【问题讨论】:

  • 我想知道当地专业人士需要多长时间才能解决这个令人难以置信的问题。
  • 对该 POST 使用 isset
  • $costAlertVar,$userConnection 可能一个或两个都没有设置。
  • 我尝试了 if(isset($_POST['costAlertTrue'])) {.. 仍然没有,但我可以得到 Header Location 和 $var 的错误

标签: php mysql mysqli exit die


【解决方案1】:

如果用以下内容替换主 if 语句会发生什么?我已经让它变得相当简单,只要你正确传递 $db 变量,这应该会给你一些结果。

if($_POST['costAlertTrue'] != "") {
    // CHECKS AND IF ERROR - REDIRECT BACK
    if(..) {$_SESSION['status'] ="E1"; header("Location: ./?page=cAlert"); exit();}
    if(..) ...

    // SQL
    $sql = "UPDATE ".$dbprfx."_users SET costAlertVar = ? WHERE connection = ?";


    //$eintrag = $db->prepare($sql);
    //if ($eintrag->error()) { print($eintrag->error()); }
    if($db->connect_errno > 0){
            die("Error connecting to db.");
    }

    //$eintrag->bind_param('ss',$costAlertVar,$userConnection);
    //$eintrag->execute();
    if(!$result = query($sql)){
            die("Error running query");
    }
    //$eintrag->close();
    $db->close();

    // REDIRECT 
    $_SESSION['status'] ="on"; header("Location: ./?page=cAlert");

} // End

我还注意到您在 mysqlic_connect 语句中使用了不包含错误文本的 or die 语句。如果实际上您无法在那里连接,那么您的脚本一开始就死了,没有输出。这也是问题的一个原因。

【讨论】:

    【解决方案2】:

    感谢您的帮助,我尝试了您的所有提示,但突然奏效了

    $sql = "UPDATE ".$dbprfx."_users SET costAlertVar = ? WHERE connection = ?";
    $eintrag = $db->prepare( $sql );
    $eintrag->bind_param('ss',$costAlertVar,$userConnection);
    $eintrag->execute();
    $eintrag->close();
    

    【讨论】:

      【解决方案3】:

      这是否意味着如果没有错误死亡

      if (!$eintrag->error()) { die('Not Working'); }
      

      删除!

      【讨论】:

      • 好的,我删除了它,但问题是:我在整个 if 语句中没有错误。我试过死();出口();等sql之前的所有检查都正常。
      • @user2987790 回显 $sql。
      • 回声 $sql;死();出口();不工作,所以我做了: header("Location: $sql");它给了我: UPDATE cms_users SET costAlertVar = ? WHERE 连接 = ?
      【解决方案4】:

      即使一切正常,$eintrag->error(); {die('Not Working');} 行每次都会死掉,因为 PHP 会看到语句 $eintrag->error() 和代码块 {die('Not Working');}

      你应该这样使用:

      if (!$eintrag->error()) { die('Not Working'); }
      

      【讨论】:

      • 谢谢,我更新了代码,但这不是问题。还是不行
      猜你喜欢
      • 2012-01-25
      • 1970-01-01
      • 2010-11-12
      • 2023-04-07
      • 2015-03-03
      • 1970-01-01
      • 1970-01-01
      • 2013-07-13
      相关资源
      最近更新 更多