我的PHP代码有问题。问题在于$_GET['id']
。如您所见,我输出与用户ID匹配的用户的结果集。
问题是,当我在网址上输入两个不同的值时,为什么我得到相同的结果(id为1的用户的结果集)?
网址1:
网址2:
不应该考虑文本(randomtext),因为代码似乎忽略了它。
<?php
try {
$db = new PDO('mysql:host=127.0.0.1;dbname=ptp', 'root', 'root');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
}
$id = $_GET['id'];
$sql = "SELECT * FROM users WHERE id = :id";
echo $id . '<br/>';
$query = $db->prepare($sql);
$query->bindParam(':id', $id);
$query->execute();
while($r = $query->fetch(PDO::FETCH_ASSOC)) {
print_r($r);
}
?>
答案 0 :(得分:1)
就像PHP一样,MySQL会将字符串my_list.each |element| do
puts JSON.load(element).class rescue String
end
强制转换为int "1random"
。因此,如果您的ID字段是数字,即使在1之后有一些随机文本,查询也会被视为1
只需在PHP中尝试:"SELECT * FROM users WHERE id = 1"
它将返回true。它在MySQL中是一样的。
但是,如果您尝试查找标识为var_dump('1dfg' == 1)
的用户,则不会返回任何内容,因为此字符串无法转换为int。