<?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 绑定不起作用
答案 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;
?>