我的PHP代码有问题。问题在于$_GET['id']
。如您所见,我输出与用户id匹配的用户的结果集。
问题是,当我在url上输入两个不同的值时,为什么要获得相同的结果( id 1的用户结果集)?
URL 1:
URL2:
不应该考虑文本(随机文本),因为代码似乎忽略了它。
<?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);
}
?>
发布于 2016-11-10 06:24:20
就像PHP一样,MySQL将字符串"1random"
转换为int 1
。因此,如果您的id字段是一个数字,即使在1后面有一些随机文本,查询也将被视为"SELECT * FROM users WHERE id = 1"
。
只要在PHP:var_dump('1dfg' == 1)
中尝试一下,它就会返回true。这在MySQL中是一样的。
但是,如果您试图找到一个id "dfg1"
的用户,则不会返回任何内容,因为这个字符串不能作为int强制转换。
https://stackoverflow.com/questions/40529628
复制