2014-02-08 44 views
0
<?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; 
?> 

它返回所有我發送的用戶名存在的行,雖然他們實際上不存在。Ajax - SQL - 返回所有行的行

EDIT1:http://pastebin.com/DWb7uZV1 用結合不工作就rowCount時方法

+0

檢查是否$ _POST [「用戶名」]被傳遞到PHP,並嘗試使用bindValue –

+0

http://pastebin.com/DWb7uZV1 – Yashas

回答

2

手冊是相當清楚的。 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; 
?> 
+0

你有語法錯誤編輯之前有人下來票糾正。 –

+0

感謝您的注意,編輯。 –

+0

我認爲我們應該在提供任何字符串給查詢之前使用'沒有它會導致語法錯誤? – Yashas