Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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 使用$\u GET后,变量和字符串不会回显_Php_Variables - Fatal编程技术网

Php 使用$\u GET后,变量和字符串不会回显

Php 使用$\u GET后,变量和字符串不会回显,php,variables,Php,Variables,我目前正在为MAMP主持的一个学校项目编写一个电子商务网站,我需要使用$\u GET变量将产品框链接到一个描述页面。当我单击这些框时,它们都成功链接到details.php页面。但是,重定向页面是空白的,只有背景色和我的导航栏。php代码不回显任何字符串或变量,甚至不回显html文本。我使用了php语法检查器来检查代码,没有错误!!我很困惑 非常感谢你的帮助 下面的代码是我在详细信息页面上的php文本。 您在此处缺少一个报价: $sql = "SELECT * FROM company WHER

我目前正在为MAMP主持的一个学校项目编写一个电子商务网站,我需要使用$\u GET变量将产品框链接到一个描述页面。当我单击这些框时,它们都成功链接到details.php页面。但是,重定向页面是空白的,只有背景色和我的导航栏。php代码不回显任何字符串或变量,甚至不回显html文本。我使用了php语法检查器来检查代码,没有错误!!我很困惑

非常感谢你的帮助

下面的代码是我在详细信息页面上的php文本。
您在此处缺少一个报价:

$sql = "SELECT * FROM company WHERE id = '$company_id;";
添加报价:

$sql = "SELECT * FROM company WHERE id = '$company_id'";
如果没有引号,您的查询将无效,mysqli_查询将在失败时返回false:

失败时返回FALSE。要成功选择、显示、描述或 解释查询mysqli\u查询将返回mysqli\u结果对象。对于 其他成功的查询mysqli_query将返回TRUE

由于它返回false,while将作为条件变为false,并且while块将永远不会执行

此外,如果您不确保所使用的参数正确转义,则您的站点是可黑客攻击的。使用mysqli_*时,您需要仔细查看

编辑

虽然我的建议是让您能够快速解决问题,但您确实需要使用参数化查询,正如David在评论部分所指出的那样。他给出了这个有用的链接:

这是一个基于代码的示例,用于准备语句。要访问获取日期所需的数据,可以在while循环中执行,如:

while ($row = $result->fetch_assoc()) {
        // do things
    }

您可以阅读有关mysqli获取的更多信息

首先检查您在标记中提到的method=GET。并在$sql查询中使用以下更改


如果1查询字符串值不存在,2查询不返回结果,或3查询结果出错,则代码不会输出任何内容。您应该检查这些条件,以查看发生的情况。此外,请注意,您的代码对SQL注入非常开放。实际上,您允许用户在您的服务器上执行他们想要的任何代码。mysqli_num_rows$result;让我知道你得到了什么。我怀疑没有找到匹配的行,或者您的查询有问题。$sql=SELECT*FROM company WHERE id='$company_id;;Unclosed',这可能会使您没有结果。您对SQL注入持开放态度-尤其是当您以这种方式使用$\u GET时,如果这是一条update语句,中间的人也可能是pos-尽管他们可以从公司表中进行选择,其中id=任何idEscaping字符串也不总是能够防止SQL注入攻击。最好从这里开始:解决方案不是在将用户可编辑值作为代码执行之前对其进行清理,而是首先不将其作为代码执行。@David我同意你的看法。我已经向提问者展示了他/她如何使代码更安全,但PDO无疑是一个更好的选择。我可以编辑我的答案来澄清这一点,但我想让事情保持简单,因为提问者显然是初学者。现在更有理由向提问者灌输更好的习惯,而不是在答案中显示SQL可注入代码:此外,PDO不是必需的,也不是真正相关的。代码已经在使用mysqli了,它的功能非常强大。嗨,Lajos,非常感谢你指出我的错误。我知道这个网站是可以被黑客攻击的,所以我以后会处理这个问题。但是,添加引号仍然不会改变任何事情。@业余程序员如果你看一下服务器错误日志,你会看到什么?嗨,Suriya!我刚试过你的代码,但块仍然没有执行任何东西。
$stmt = $mysqli->prepare("SELECT * FROM company WHERE id =?")
$stmt->bind_param("i", $company_id);
$result=$stmt->execute();
while ($row = $result->fetch_assoc()) {
        // do things
    }