gpt4 book ai didi

php - 脚本破坏了 MySQL 查询,但没有给出错误?

转载 作者:行者123 更新时间:2023-11-29 06:14:36 25 4
gpt4 key购买 nike

我真的不明白这里的问题是什么,我已经尝试了一切可以诊断问题的方法,并设法隔离我认为导致问题的位置(请参阅下面的隔离):

这是我的完整代码:

include("db_conn.php");
$conn = mysql_connect($db_host, $db_user, $db_pass) or die(mysql_error()); mysql_select_db($db_name) or die(mysql_error());;

$timestamp = time();
$add_time = time()+(60*60);

$query = "UPDATE links SET timestamp = '$add_time', hit_counter = '0' WHERE timestamp >= '$timestamp' AND overflow = 'NO'";
$result = mysql_query($query) or die(mysql_error());

$query = "SELECT * FROM links WHERE timestamp <= '$timestamp' AND hit_counter <= max_hits AND overflow = 'NO'";
$result = mysql_query($query);

$size = mysql_num_rows($result) or die(mysql_error());

if($size == 0) {
$query = "SELECT * FROM links WHERE overflow = 'YES'";
$result = mysql_query($query) or die(mysql_error());

$overflow = array();
while($row = mysql_fetch_assoc($result)) {
$overflow[] = $row['link'];
}

header("Location: http://www.google.com/?url=$overflow[0]");
}

$links = array();
$hits = array();

while($rows = mysql_fetch_assoc($result)) {
$links[] = $rows['link'];
$hits[] = $rows['hit_counter'];
}


$key = rand(0,$size);

$link = $links[$key];
$hit_counter = $hits[$key]+1;

$query = "UPDATE links SET hit_counter = '$hit_counter' WHERE link = '$link'";
$result = mysql_query($query) or die(mysql_error());*/

echo $link;
echo $hit_counter;

mysql_close($conn);

当脚本运行时,echo $link;(应该是随机选择的 URL)不显示任何内容。

为了诊断问题,我一直在尝试使用 echo "Hello World!";,逐渐将其向上移动到脚本中,直到 echo "Hello World!"; 被放置在初始 MySQL 查询之前,这让我相信问题就在那里,即使没有打印 mysql_error()'s

此外,我尝试在 $size = ... 下面的行上 echo $size; 但仍然不显示任何内容。

隔离:

$query = "UPDATE links SET timestamp = '$add_time', hit_counter = '0' WHERE timestamp >= '$timestamp' AND overflow = 'NO'";
$result = mysql_query($query) or die(mysql_error());

$query = "SELECT * FROM links WHERE timestamp <= '$timestamp' AND hit_counter <= max_hits AND overflow = 'NO'";
$result = mysql_query($query);

$size = mysql_num_rows($result) or die(mysql_error());

有谁知道为什么这会导致脚本的其余部分无法运行,但不返回任何错误?

任何帮助将不胜感激。

最佳答案

我认为问题出在这一行:

$size = mysql_num_rows($result) or die(mysql_error());

当 num_rows 调用返回 0 时,即使根本没有错误,解释器也会解析 die(mysql_error()) 部分。

教训:最好避免 ... 或 die() 构造。相反,请进行适当的检查:

$size = mysql_num_rows($result);

if ($size === false) die(mysql_error()); // or, even better, trigger_error()
// so mySQL errors aren't shown
// in production

关于php - 脚本破坏了 MySQL 查询,但没有给出错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7302259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com