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
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']
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>" >
让我们从表单开始。 $_PHP_SELF
不存在。您想要使用的是 $_SERVER['PHP_SELF']
。您最好不要尝试处理该变量并将操作留空:
<form method="post" action="">
你的 PHP 将永远 运行.....你需要做这样的事情:
if(isset($_POST['delete'])) {
// run the PHP here.
}
备注
mysql_*
库已弃用并设置为将来删除。请考虑使用更可靠的库,例如 PDO
或 MySQLi
。这一点都不难。这是一个简单的 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();
您需要提供 delete
按钮的 onClick
属性中的 confirm_delete()
代码。
您的问题出在您的 $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'];?>">
我遇到了成功消息或失败消息的问题。我的代码在下面,但问题是无论如何,成功消息总是显示 - 甚至在查询发生之前。如果我删除成功消息 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
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']
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>" >
让我们从表单开始。 $_PHP_SELF
不存在。您想要使用的是 $_SERVER['PHP_SELF']
。您最好不要尝试处理该变量并将操作留空:
<form method="post" action="">
你的 PHP 将永远 运行.....你需要做这样的事情:
if(isset($_POST['delete'])) {
// run the PHP here.
}
备注
mysql_*
库已弃用并设置为将来删除。请考虑使用更可靠的库,例如 PDO
或 MySQLi
。这一点都不难。这是一个简单的 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();
您需要提供 delete
按钮的 onClick
属性中的 confirm_delete()
代码。
您的问题出在您的 $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'];?>">