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_Hyperlink - Fatal编程技术网

PHP、MYSQL和超链接-从一个页面链接到一个详细页面(同一个表)

PHP、MYSQL和超链接-从一个页面链接到一个详细页面(同一个表),php,mysql,hyperlink,Php,Mysql,Hyperlink,不知道为什么这个页面似乎不起作用 尝试从URL获取ID并使用该ID筛选表 示例URL: 即使我知道存在匹配项,但当我键入该URL时,仍将得到0个结果。有什么想法吗 <html> <head> <style>table, th, td {border: 1px solid black;}</style> </head> <?php $id = $_GET["id"]; $servername = "INSERTSERVER";

不知道为什么这个页面似乎不起作用

尝试从URL获取ID并使用该ID筛选表

示例URL:

即使我知道存在匹配项,但当我键入该URL时,仍将得到0个结果。有什么想法吗

<html>
<head>
<style>table, th, td {border: 1px solid black;}</style>
</head>

<?php

$id = $_GET["id"];

$servername = "INSERTSERVER";
$username = "INSERTUSER";
$password = "INSERTPASSWORD";
$dbname = "INSERTDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
} 


$pd = "

SELECT fac_id, pd, phone_pd 
FROM ft_location_db
WHERE fac_id = $id

";


$result = $conn->query($pd);

if ($result->num_rows > 0) {
echo "<table cellpadding=5 bgcolor=#FFFFFF><tr><th>PD</th><th>Phone</th>
</tr>";
// output data of each row
while($row = $result->fetch_assoc()) {
    echo "<tr><td>" . $row["pd"]. "</td><td>" . $row["phone_pd"]. "</td>
</tr>";
}
echo "</table>";
} else {
echo "0 results";
}






$conn->close();
?> 

</body>
</html>

表,th,td{边框:1px纯黑色;}

请参见答案底部的注释

如果
fac_id
是字符串数据类型,则应将其包装

$pd = "
SELECT fac_id, pd, phone_pd 
FROM ft_location_db
WHERE fac_id = '$id'
";
您必须使用单引号,因为您的查询写在双引号内

使用单引号:

$pd = '
SELECT fac_id, pd, phone_pd 
FROM ft_location_db
WHERE fac_id = "' . $id . '"
';
但是(而且非常重要),我建议您查看以确保查询的安全

$stmt = $conn->prepare('
    SELECT fac_id, pd, phone_pd 
    FROM ft_location_db
    WHERE fac_id = ?');
$stmt->bind_param('s', $id);
$stmt->execute();
$result = $stmt->get_result();

另请参见:

如果标识符是
123G
fac_id
列似乎是字符串数据类型,对吗?是的,这有问题吗?这是独一无二的。事实上,我发现了这一点。其中fac_id=$id必须是其中的fac_id='$id'对于SQL和PHP来说是非常新的。“和”的处理方式是什么?我似乎认为写东西的方式不同?”因为变量不是在单引号字符串中解释的。“-嗯?你说得有点对,但我上面引用你的话需要编辑或删除。这容易受到sql注入的攻击吗?”?我以为作为一个准备好的声明我没事??谢谢@FunkFortyNiner我已经删除了这句话。这可能是我翻译的错误。但我不知道我犯了什么错。你能告诉我吗?非常感谢。@Talsma是的,它很脆弱。尽快使用准备好的报表:)