PHP AJAX中的数组显示问题

时间:2012-08-26 00:05:11

标签: php ajax arrays

我正在学习一些新东西,检查数据库中是否使用了用户名,并根据我在网上找到的教程创建了一些代码。我理解逻辑,但不确定我是否以正确的方式接近它。在本质上。信息从表单字段传递。如果输入的内容与数据库中的字段匹配,那么我希望它返回/回显结果“是”。如果它不匹配,我需要它回应'不'。似乎很直接。

本教程是为预定值而设计的。即 $ existing_users =阵列( '试验', '' 一个 ' '2',3');

虽然我想要'测试',''一个','两个',三个'实际从数据库中动态提取。

所以我开始添加设置,但是当我尝试放置动态值时,我编写的代码不起作用。我的代码如下:

$existing_users = array();
mysql_select_db($database_db, $db);
$result = mysql_query('SELECT * FROM clients') or exit(mysql_error());
while ($row = mysql_fetch_assoc($result)) {$existing_users[] = $row['shortcode'];}

$arr = $existing_users;

$display = "'" . implode("', '", $arr) . "'";

    // THIS IS THE PROBLEM 
    // If the code is written out as:
    // $existing_users=array('test',''one','two',three'); 
    // It works.
    // When the script is coded as below. It doesn't work.
    // Note. If I echo $display is displays 'test',''one','two',three'

$existing_users=array($display);

//value received from the get method
$user_name=$_POST['user_name'];

//checking weather user exists or not in $existing_users array
if (in_array($user_name, $existing_users))
{

//user name is not available
echo "no";
} 
else
{ 
//user name is available 
echo "yes";
}

我不确定我是否正在以正确的方式接近这一点,因为我正在攻击一个在线音乐,可能会有一个更容易的方法。任何想法都将不胜感激。

2 个答案:

答案 0 :(得分:3)

这是一种更快的方法:

$user_name=mysqli_real_escape_string($_POST['user_name']);

$result = mysql_query("SELECT * FROM clients where shortcode like '$user_name'") or exit(mysql_error());

if(mysql_num_rows($result)==0)
    echo 'no';
else
    echo 'yes'

我没有验证来自$ _POST tho的输入

你还在教什么教程?

答案 1 :(得分:1)

您不需要重新制作$existing_users,因为您已经从数据库查询创建该数组

$existing_users = array();
mysql_select_db($database_db, $db);
$result = mysql_query('SELECT * FROM clients') or exit(mysql_error());
while ($row = mysql_fetch_assoc($result)) {
    $existing_users[] = $row['shortcode'];
}

$user_name=$_POST['user_name'];

if (in_array($user_name, $existing_users)){
    echo "no";
} else { 
    //user name is available 
    echo "yes";
}

并尝试将代码移至PDO

$db = new PDO('mysql:host=localhost;dbname='.$database_db, 'username', 'password', array(ATTR::PDO_EMULATE_PREPARES => false));
$stmt = $db->prepare("SELECT * FROM clients WHERE `shortcode`=:shortcode");
$stmt->execute(array(':shortcode' => $_POST['user_name']));

if($stmt->rowCount() == 1){
    echo 'no';
} else {
    echo 'yes';
}