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\">✕</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这是对的,但它会