【问题标题】:PHP Code stopping short of breakpoint - HTTP 500 ErrorPHP 代码在断点处停止 - HTTP 500 错误
【发布时间】:2014-05-08 22:29:25
【问题描述】:
<?php

//Create Connection
$PokemonConnection=mysqli_connect("IP ADDRESS","USERNAME","PASSWORD","pokemon_test");

//Check Connection
if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$XenConnection=mysqli_connect("IP ADDRESS","USERNAME","PASSWORD","voyagers_xenFinal");

//Check Connection
if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

//Generating the PokeKey
$length = 14;
$PokeKey = "NG1PrB5myQZeWL";
//substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, $length);
echo $PokeKey;
echo PHP_EOL;
echo $PokeKey;
echo PHP_EOL;
echo $PokeKey;
echo 'Test 1';
//Getting Last Thread ID
$LastThreadQuery = "SELECT thread_id FROM xf_thread ORDER BY thread_id DESC LIMIT 1";
$LastThread = mysqli_query($XenConnection, $LastThreadQuery);
$LastThreadNum = mysql_numrows($LastThread);
echo $LastThreadNum;
echo 'Test 4';
mysqli_free_result($LastThread);
echo $LastThread;
echo 'Test 2';
//Generate Check Queries To Verify Existence and Eliminate Duplication Possibilities
$PokeKeyDuplicateCheck = mysqli_query($PokemonConnection, "SELECT POKEKEY FROM poketoken WHERE (POKEKEY = '".$PokeKey."') ORDER by POKEKEY DESC LIMIT 1") or die (mysqli_error($PokemonConnection));
echo $PokeKeyDuplicateCheck['POKEKEY'];
echo PHP_EOL;
echo 'Test 3';
$ThreadExistCheck = mysqli_query($XenConnection,"SELECT thread_id FROM xf_thread WHERE (thread_id = '".$THREAD_ID."') ORDER by thread_id DESC LIMIT 1");
echo $ThreadExistCheck;
echo PHP_EOL;

mysqli_close($PokemonConnection);
mysqli_close($XenConnection);
?>

输出:

NG1PrB5myQZeWL NG1PrB5myQZeWL NG1PrB5myQZeWLTest 1Test 4

刚从在 Bash Unix Scripting 中编写这个项目到 PHP,并在我完成这个项目的过程中逐渐学习这种语言。

对任何对语法迷的疏忽深表歉意!

【问题讨论】:

  • 您的问题的答案是肯定的,除非我弄错了,否则您问题中的代码证明了这一点,您甚至已经运行了工作代码并得到了我怀疑的预期输出.你为什么还要发布这个问题?
  • 这个问题似乎离题了,因为它在问题的正文中回答了自己。
  • 因为我的代码在我的测试 4 断点处停止。
  • 如果代码没有执行我所有的断点,那是个问题吧?
  • 另外我问这个是因为我在执行查询和显示结果时遇到问题,这就是我对这个问题存在的原因。

标签: php html apache


【解决方案1】:

如果您的脚本(或服务器,但在本例中为脚本)有错误并且配置为不向用户显示详细信息,则会显示 500 错误。这对于生产环境来说是一个很好的配置,因为用户不会因为无法阅读的细节而烦恼,而且黑客也不能轻易地收集后端信息,但它不适合开发目的,因为您不知道错误在哪里。


在你的情况下,有一个简单的脚本错误:

$LastThreadNum = mysql_numrows($LastThread);

您对 mysqli 结果对象使用了 mysql-extension 的过时函数,这可能会引发错误。


编辑:发现另外两个错误:

$ThreadExistCheck = mysqli_query($XenConnection,"SELECT thread_id FROM xf_thread WHERE (thread_id = '".$THREAD_ID."') ORDER by thread_id DESC LIMIT 1");
echo $ThreadExistCheck;

$PokeKeyDuplicateCheck = mysqli_query($PokemonConnection, "SELECT POKEKEY FROM poketoken WHERE (POKEKEY = '".$PokeKey."') ORDER by POKEKEY DESC LIMIT 1") or die (mysqli_error($PokemonConnection));
echo $PokeKeyDuplicateCheck['POKEKEY'];

两者几乎是相同的错误,您使用 mysqli 结果对象作为字符串/数组;

$ThreadExistCheck = mysqli_query($XenConnection,"SELECT thread_id FROM xf_thread WHERE (thread_id = '".$THREAD_ID."') ORDER by thread_id DESC LIMIT 1");
$ThreadExistCheck = mysqli_fetch_row($ThreadExistCheck)[0];
echo $ThreadExistCheck;

$PokeKeyDuplicateCheck = mysqli_query($PokemonConnection, "SELECT POKEKEY FROM poketoken WHERE (POKEKEY = '".$PokeKey."') ORDER by POKEKEY DESC LIMIT 1") or die (mysqli_error($PokemonConnection));
$PokeKeyDuplicateCheck = mysqli_fetch_assoc($PokeKeyDuplicateCheck);
echo $PokeKeyDuplicateCheck['POKEKEY'];

您需要使用函数从结果中获取实际数据。 mysqli_fetch_row 给出一个数字数组,其中包含每一行的数据,mysqli_fetch_assoc 一个关联数组(您可以使用 ['row_name'] 代替数字)。

【讨论】:

    猜你喜欢
    • 2012-08-24
    • 2021-04-20
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    • 2023-04-06
    • 2021-07-01
    • 2019-11-01
    相关资源
    最近更新 更多