为什么Mysql会忽略文本?

时间:2016-11-10 14:09:13

标签: php mysql

我的PHP代码有问题。问题在于$_GET['id']。如您所见,我输出与用户ID匹配的用户的结果集。

问题是,当我在网址上输入两个不同的值时,为什么我得到相同的结果(id为1的用户的结果集)?

网址1:URL 1

网址2:URL 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);
        }

    ?>

1 个答案:

答案 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。