我目前正在为MAMP托管的学校项目编写一个电子商务网站,我需要使用$ _GET变量将产品框链接到描述页面。当我单击这些框时,它们都成功链接到details.php页面。但是,重定向的页面是空白的,只有背景颜色和我的导航栏。 php代码不回显任何字符串或变量,甚至html文本。我已经使用了php语法检查器来检查代码,并且没有错误!我很困惑。
非常感谢您的帮助。
以下代码是我的详细信息页面上的php文本。
<?php
if(isset($_GET['comp_id'])){
$company_id = $_GET['comp_id'];
$sql = "SELECT * FROM company WHERE id = '$company_id;";
$result = mysqli_query($conn,$sql);
while ($row = mysqli_fetch_array($result)){
$comp_image = $row ['image'];
$comp_name = $row ['name'];
$comp_location= $row ['location'];
$comp_position = $row ['position'];
$comp_duration = $row ['duration'];
$comp_description = $row['description'];
$comp_applink= $row['form'];
echo "
<h1>Hello</h1>
";
}
}
?>
答案 0 :(得分:1)
if(isset($_GET['comp_id'])){
$company_id = $_GET['comp_id'];
$sql = "SELECT * FROM company WHERE id = '$company_id'";
$result = mysqli_query($conn,$sql);
while ($row = mysqli_fetch_array($result)){
$comp_image = $row ['image'];
$comp_name = $row ['name'];
$comp_location= $row ['location'];
$comp_position = $row ['position'];
$comp_duration = $row ['duration'];
$comp_description = $row['description'];
$comp_applink= $row['form'];
echo "
<h1>Hello</h1>
";
}
}
这不是最好的方法,您的脚本可以进行sql注入,但可以尝试达到目的,并且考虑到$company_id
是整数,可以这样做。阅读mysqli中准备好的语句,以使您的代码更安全。您的错误是您缺少单引号,但如果处理字符串数据,则可能会出现更多问题。
$stmt = $mysqli->prepare("SELECT * FROM company WHERE id =?")
$stmt->bind_param("i", $company_id);
$result=$stmt->execute();
这是一个基于您的代码的示例,用于准备的语句。要访问它,您需要获取日期(可以在while循环内完成),例如:
while ($row = $result->fetch_assoc()) {
// do things
}
您可以了解有关 mysqli提取 here
的更多信息答案 1 :(得分:0)
您在这里缺少引号:
$sql = "SELECT * FROM company WHERE id = '$company_id;";
添加引号:
$sql = "SELECT * FROM company WHERE id = '$company_id'";
不带引号的查询将无效,并且mysqli_query失败时将返回false:
失败时返回FALSE。要成功执行SELECT,SHOW,DESCRIBE或 EXPLAIN查询mysqli_query()将返回mysqli_result对象。对于 其他成功的查询mysqli_query()将返回TRUE。
http://php.net/manual/en/mysqli.query.php
由于它返回false,因此条件中的while将变为false,并且while块将永远不会执行。
此外,如果您不确定所使用的参数是否正确转义,则您的网站可能会受到黑客攻击。使用mysqli_ *,您需要查看mysqli_real_escape_string。
编辑
尽管我的建议是使您能够快速解决问题,但正如David在评论部分中指出的那样,您确实需要使用参数化查询。他给出了这个有用的链接:How can I prevent SQL injection in PHP?
答案 2 :(得分:0)
首先检查您的标记中是否提到method =“ GET”。并在$ sql查询中使用以下更改。
<?php
if( isset($_GET['comp_id']) ) {
$company_id = $_GET['comp_id'];
$sql = "SELECT * FROM company WHERE id = '".$company_id."'";
$result = mysqli_query($conn,$sql);
while ( $row = mysqli_fetch_array($result) ){
$comp_image = $row['image'];
$comp_name = $row['name'];
$comp_location= $row['location'];
$comp_position = $row['position'];
$comp_duration = $row['duration'];
$comp_description = $row['description'];
$comp_applink= $row['form'];
echo "<h1>Hello</h1>";
}
}
?>
我希望这对您有所帮助,请检查并告知我。