Ajax - SQL - 返回所有内容的行

时间:2014-02-08 07:57:14

标签: php sql ajax

<?php
    header('content-type: text/json');

    if(!isset($_POST['username']))
        exit;
    $db = new PDO('mysql:host=ASDFSDF;dbname=QWEQWESAD','SDFSDF','ASAsaD_',array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
    $query = $db->prepare('SELECT * FROM mybb_users WHERE username =\''.$_POST['username'].'\'');
    $query->execute();

    echo json_encode(array('exists' => $query->rowCount() > 0));
    exit;
?>

它返回我发送的所有用户名存在的行,尽管它们实际上不存在。

EDIT1:http://pastebin.com/DWb7uZV1 绑定不起作用

1 个答案:

答案 0 :(得分:2)

关于rowCount方法的手册非常清楚。 http://php.net/manual/en/pdostatement.rowcount.php

对于大多数数据库,PDOStatement :: rowCount()不会返回受SELECT语句影响的行数。

所以你想要做的是使用计数查询。

<?php
    header('content-type: text/json');

    if(!isset($_POST['username']))
        exit;

    $db = new PDO('mysql:host=ASDFSDF;dbname=QWEQWESAD','SDFSDF','ASAsaD_',array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
    $query = $db->prepare('SELECT count(*) FROM mybb_users WHERE username = ?');
    $query->bindParam(1, $_POST['username'], PDO::PARAM_STR);
    $query->execute();

    //echo json_encode(array('exists' => $query->fetchColumn() > 0));
    echo json_encode($query->fetchColumn() == 0);
    exit;
?>