Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php sql查询有时工作,有时不工作';T_Php_Mysql - Fatal编程技术网

Php sql查询有时工作,有时不工作';T

Php sql查询有时工作,有时不工作';T,php,mysql,Php,Mysql,我在管理面板中设置了启用/禁用按钮 按钮有时工作,但有时不工作,我不知道是什么原因造成的。有什么想法吗 创建客户端列表 <?php dbcon(); $navQuery = 'SELECT * FROM mw_clients WHERE status = 1'; $li = mysql_query($navQuery); while($row = mysql_fetch_array($li){ echo "<tr><td&

我在管理面板中设置了启用/禁用按钮

按钮有时工作,但有时不工作,我不知道是什么原因造成的。有什么想法吗

创建客户端列表

<?php
    dbcon();
    $navQuery = 'SELECT * FROM mw_clients WHERE status = 1';
    $li = mysql_query($navQuery);
    while($row = mysql_fetch_array($li){
        echo "<tr><td><a href=\"index.php?loc=" . $row['clientSlug'] . "\">" . $row['name'] . "</a></td><td align=\"center\"><a style=\"text-decoration: none;\" href=\"changeStatus.php?type=2&id=" . $row['id'] . "&status=0\">&#10005;</a></td></tr>";
    }
?>

mysql\u查询
返回true(success)时,您会回显
mysql\u错误
,但如果失败则不会

mysql\u query
返回false时,尝试将
mysql\u error
移动到if语句的第二部分

编辑:

根据您的评论,这里还有一些建议

在代码中添加一些疑难解答语句。如果没有调试器或单步执行代码的方法,一些echo语句在确定发生了什么时可能是非常宝贵的。例如,在第一个
if
语句之前,添加:

echo 'Status: ' . $status . '<br />';
echo 'Type: ' . $type . '<br />';
要了解通过$\u GET数组得到的信息

假设正常工作,接下来确保连接成功:

dbcon() or die(mysql_error());
(您可能必须编辑dbcon()方法,以便在实际尝试连接时捕获错误,dbcon()方法必须在失败时返回布尔值false,以便
或die
正常工作。)

接下来,确保您的查询按照您的需要构造。另一个echo语句可以帮助:

echo 'Query: ' . $query . '<br />';

希望这些建议中的一个能有所帮助

mysql\u查询
返回true(success)时,您会回显
mysql\u错误
,但如果失败则不会

mysql\u query
返回false时,尝试将
mysql\u error
移动到if语句的第二部分

编辑:

根据您的评论,这里还有一些建议

在代码中添加一些疑难解答语句。如果没有调试器或单步执行代码的方法,一些echo语句在确定发生了什么时可能是非常宝贵的。例如,在第一个
if
语句之前,添加:

echo 'Status: ' . $status . '<br />';
echo 'Type: ' . $type . '<br />';
要了解通过$\u GET数组得到的信息

假设正常工作,接下来确保连接成功:

dbcon() or die(mysql_error());
(您可能必须编辑dbcon()方法,以便在实际尝试连接时捕获错误,dbcon()方法必须在失败时返回布尔值false,以便
或die
正常工作。)

接下来,确保您的查询按照您的需要构造。另一个echo语句可以帮助:

echo 'Query: ' . $query . '<br />';

希望这些建议中的一个能有所帮助

您可以通过将整个代码替换为以下内容来删除所有重复:

require ('../common.php');

$type = $_GET["type"];
$id = $_GET["id"];
$status = $_GET["status"];

dbcon();

$table = "mw_clients";
if ($type == "1") {
    $table = "mw_cats";
}

$query = "UPDATE ".$table." SET status=".mysql_real_escape_string($status)." WHERE id=" . mysql_real_escape_string($id) . "";
if (mysql_query($query))
{
    header ('HTTP/1.1 301 Moved Permanently');
    header ('Location: clients.php');
} else {
    echo '<p>Could not change status '. mysql_error() .'</p>';
}
require('../common.php');
$type=$\u GET[“type”];
$id=$_GET[“id”];
$status=$_GET[“status”];
dbcon();
$table=“mw_客户”;
如果($type==“1”){
$table=“mw_猫”;
}
$query=“UPDATE”。$table。“SET status=”.mysql\u real\u escape\u string($status)。“WHERE id=”。mysql\u real\u escape\u字符串($id)。"";
if(mysql_查询($query))
{
标题(“HTTP/1.1 301永久移动”);
标题('Location:clients.php');
}否则{
echo“无法更改状态”。mysql_错误()。

; }
还添加了安全功能(任何人都可以在浏览器中调用此脚本并对数据库执行操作),并将
$type
作为
字符串而不是
数字来检查


我不知道它为什么会失败-但是现在您有了一些实际的错误检查(移动
mysql_error()
),因此调试应该更容易您可以通过将整个代码替换为:

require ('../common.php');

$type = $_GET["type"];
$id = $_GET["id"];
$status = $_GET["status"];

dbcon();

$table = "mw_clients";
if ($type == "1") {
    $table = "mw_cats";
}

$query = "UPDATE ".$table." SET status=".mysql_real_escape_string($status)." WHERE id=" . mysql_real_escape_string($id) . "";
if (mysql_query($query))
{
    header ('HTTP/1.1 301 Moved Permanently');
    header ('Location: clients.php');
} else {
    echo '<p>Could not change status '. mysql_error() .'</p>';
}
require('../common.php');
$type=$\u GET[“type”];
$id=$_GET[“id”];
$status=$_GET[“status”];
dbcon();
$table=“mw_客户”;
如果($type==“1”){
$table=“mw_猫”;
}
$query=“UPDATE”。$table。“SET status=”.mysql\u real\u escape\u string($status)。“WHERE id=”。mysql\u real\u escape\u字符串($id)。"";
if(mysql_查询($query))
{
标题(“HTTP/1.1 301永久移动”);
标题('Location:clients.php');
}否则{
echo“无法更改状态”。mysql_错误()。

; }
还添加了安全功能(任何人都可以在浏览器中调用此脚本并对数据库执行操作),并将
$type
作为
字符串而不是
数字来检查


我不知道它为什么会失败-但是现在你有了一些实际的错误检查(移动
mysql_error()
),所以调试它应该更容易些,因为它是由永久重定向引起的。它们由浏览器缓存,因此下次访问时,它将直接转到重定向页面,而不是运行脚本。

这是由永久重定向造成的。它们由浏览器缓存,以便下次访问时直接转到重定向页面,而不是运行脚本。

$\u get
返回一个字符串,并检查数字。这是将字符串转换为数字的好方法,如果这就是问题所在,那么为什么它有时会起作用呢?PHP的优点/缺点是它不是强类型的,因此您可以成功地将“1”与1、“0”与0进行比较。。。(OP确实声明它有时会起作用。)@JYelton同意——它看起来很不整洁——我没说它能解决问题:-)。。。。不过,我的回答会有帮助。。。。至少要确定issue@JYelton是正确的,但将对请求变量的处理更改为使用intval()或类似的-
$type=intval($\u GET['type'])
$\u GET
返回一个字符串并检查一个数字,这是将字符串转换为数字的一个好方法,如果这是一个问题,那么为什么它有时会工作?PHP的优点/缺点是它不是强类型的,所以您可以成功地将“1”与“1”、“0”或“0”与“0”进行比较。。。(OP确实声明它有时会起作用。)@JYelton同意——它看起来很不整洁——我没说它能解决问题:-)。。。。不过,我的回答会有帮助。。。。至少要确定issue@JYelton这是对的,但它会