我正在学习一些新东西,检查数据库中是否使用了用户名,并根据我在网上找到的教程创建了一些代码。我理解逻辑,但不确定我是否以正确的方式接近它。在本质上。信息从表单字段传递。如果输入的内容与数据库中的字段匹配,那么我希望它返回/回显结果“是”。如果它不匹配,我需要它回应'不'。似乎很直接。
本教程是为预定值而设计的。即 $ 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";
}
我不确定我是否正在以正确的方式接近这一点,因为我正在攻击一个在线音乐,可能会有一个更容易的方法。任何想法都将不胜感激。
答案 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';
}