簡體   English   中英

PHP MySQL成功消息始終顯示

[英]PHP MySQL Success Message Always Shows

我對成功消息或失敗消息有疑問。 我的代碼在下面,但是問題是無論如何,成功消息總是顯示-即使在查詢發生之前。 如果我刪除成功消息if命令,則它不會執行應做的事情。

 isset($_POST['delete']);
 $systemid = $_POST['systemid'];
 $clientiddel = $_POST['clientiddel'];
 $querydel = "DELETE FROM ... WHERE customer = '" . $clientiddel . " ' AND system_id = '" . $systemid . "'";

  if(mysql_query($querydel))
{
    echo 'SUCCESS';
}
else
{
    echo 'FAILED' .mysql_error();
}

我的表格是

<form method='post' action='" . $_PHP_SELF . "'>
<input name='systemid' type='hidden' id='systemid' value='" . $row['system_id'] . "'><input name='clientiddel' type='hidden' id='clientiddel' value='" . $row['customer'] . "'><input name='delete' type='image' src='images/delete.gif' id='delete' alt='Delete' onclick='return confirm_delete()'>
</form>

onclick函數是

<script type='text/javascript'>
function confirm_delete() {
  return confirm('Are you sure you want to delete \'".$row['system_id']."\' from this account? ');
}
</script>

編輯:

解決了問題-在名為“ delete”的表單中添加了一個額外的隱藏字段使它按應有的方式工作。 另外,這是此操作的最終來源:

    if(isset($_POST['delete'])){
        $systemid = $_POST['systemid'];
        $clientiddel = $_POST['clientiddel'];
        $querydel = "DELETE FROM .... WHERE system_customer = '".$clientiddel." ' AND system_id = '".$systemid."'";

        if(mysql_query($querydel))
        {
            echo 'SUCCESS';
        }
        else
        {
            echo 'FAILED' .mysql_error();
        }

}

讓我們從表格開始。 $_PHP_SELF不存在。 您要使用的是$_SERVER['PHP_SELF'] 最好不要嘗試處理該變量,而將操作留空:

<form method="post" action="">

您的PHP將始終運行。...您需要執行以下操作:

if(isset($_POST['delete'])) {
    // run the PHP here.
}

注意

不建議使用mysql_*庫,並設置為將來刪除。 請研究使用更可靠的庫,例如PDOMySQLi 一點也不難。 這是一個簡單的PDO示例,可以實現您正在嘗試的功能。

/* Connect to an ODBC database using driver invocation */
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';

try {
    $dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

$sql = "DELETE FROM table WHERE customer = :client_id AND system_id = :system_id";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':client_id', $_POST['clientiddel'], PDO::PARAM_INT);
$stmt->bindParam(':system_id', $_POST['systemid'], PDO::PARAM_INT);
$stmt->execute();

在此處閱讀有關PHP PDO的更多信息


您需要提供delete按鈕的onClick屬性中存在的confirm_delete()代碼。

<?php
     if(isset($_POST['delete'])){
        $systemid = $_POST['systemid'];
        $clientiddel = $_POST['clientiddel'];
        $querydel = "DELETE FROM ... WHERE customer = '" . $clientid . " ' AND system_id = '" . $systemid . "'";

        if(mysql_query($querydel))
        {
            echo 'SUCCESS';
        }
        else
        {
            echo 'FAILED' .mysql_error();
        }
    ?>

嘗試這樣,讓我知道它是否有效。 如果不起作用,請啟用error_reporting()。 將這兩行放在頁面的開頭

ini_set('display_errors',1); error_reporting(E_ALL);

編輯:

$_PHP_SELF to $_SERVER['PHP_SELF']更改$_PHP_SELF to $_SERVER['PHP_SELF']

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>" > 

您的問題出在您的$ clientid變量上,您將其聲明為$ clientiddel

嘗試這個:

<?php
if(isset($_POST['delete'])){
    $systemid = $_POST['systemid'];
    $clientid = $_POST['clientiddel'];
    $strSQL = "DELETE FROM ... WHERE customer = '" . $clientid . " ' AND system_id = '" . $systemid . "'";
    $queryDel = mysql_query($strSQL);
    if(!$queryDel){
        echo "FAILED:" . mysql_error();
    } else {
        echo "SUCCESS";
    }
}
?>

編輯:他們是對的,您在表單標簽內也出錯,請使用以下命令:

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM