Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.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 MySQL查询下面的脚本中断,但没有给出错误?_Php_Mysql - Fatal编程技术网

Php MySQL查询下面的脚本中断,但没有给出错误?

Php MySQL查询下面的脚本中断,但没有给出错误?,php,mysql,Php,Mysql,我真的不明白这里的问题是什么,我已经尝试了我能做的一切来诊断问题,并设法找出我认为问题的原因(请参阅下面的隔离): 这是我的完整代码: 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 =

我真的不明白这里的问题是什么,我已经尝试了我能做的一切来诊断问题,并设法找出我认为问题的原因(请参阅下面的隔离):

这是我的完整代码:

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);
$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

我认为问题出在这方面:

$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

你能在每个
mysql\u查询
调用中添加一个
die mysql\u error()
吗?对不起,我没有意识到我错过了一个,我现在就这样做并相应地更新。你能在每个
mysql\u查询
调用中添加一个
die mysql\u error()
吗?对不起,我没有意识到我错过了一个,我现在就这样做并相应地更新。你是对的,谢谢计时器一停,我就接受你的评论:)!你说得对,谢谢!计时器一停,我就接受你的评论:)!