gpt4 book ai didi

php - 在数据库中搜索字符串是否存在(php、mysql)

转载 作者:行者123 更新时间:2023-11-30 23:37:45 26 4
gpt4 key购买 nike

我学习 php/mysql 已经有一段时间了,我掌握了一些基本的东西,可以让我制作一个聊天服务器。

可以创建数据库、发布消息、检索新消息。

我在尝试创建允许创建用户名的脚本时遇到了障碍。这不涉及密码。我认为这涉及 3 个步骤。

  1. 用户向服务器提交用户名和唯一 ID,如果该名称不存在,那么我将名称和 uid 添加到数据库中,该名称属于该 uid,其他人无法接受,我回应'成功'返回给客户端。
  2. 如果他们提交的名称已经存在于数据库中,但客户端 uid 与数据库中名称关联的 uid 匹配,那么我只是回显“成功”。无需向数据库添加任何内容。
  3. 他们向数据库提交了名称和 uid,该名称已被占用,并且数据库中与该名称关联的 uid 与此客户端 uid 不匹配,因此我向客户端回显“失败”。

这是我到目前为止在我的脚本中所做的。我在我还不了解如何创建必要逻辑的地方添加了伪代码。

<?php
// put_score.php
/** MySQL database name */
define('DB_NAME', 'db_Chat');
/** MySQL database username */
define('DB_USER', 'chat_App');
/** MySQL database password */
define('DB_PASSWORD', 'smile123');
/** MySQL hostname */
define('DB_HOST', $_ENV{DATABASE_SERVER});

$table = "ab_username";

// Initialization
$conn = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD);
mysql_select_db(DB_NAME, $conn);

// Error checking
if(!$conn) {
die('Could not connect ' . mysql_error());
}

if($_GET['secret'] != "some_secret") {
die('Nothing to see here...');
}

// Localize the GET variables
$udid = isset($_GET['udid']) ? $_GET['udid'] : "";
$name = isset($_GET['name']) ? $_GET['name'] : "";


// Protect against sql injections
$udid = mysql_real_escape_string($udid);
$name = mysql_real_escape_string($name);

if username exists in the DB
{
if the UID associated with that username in the database matchs the UID submited by the client the echo 'Success'
else echo 'Fail'
}
else // add name and UID to database echo 'Success'
{

// Insert the username
$retval = mysql_query("INSERT INTO $table(
udid,
name
) VALUES (
'$udid',
'$name'
)",$conn);

if($retval) {
echo "Success";
} else {
echo "Fail";
}
}
mysql_close($conn);

?>

如果有人可以帮助我替换伪代码,将不胜感激。

非常感谢,-代码

最佳答案

目前无法测试,但这正是您所需要的:

$udid_mismatch=false;
$name_found=false;
$result = mysql_query("SELECT udid FROM table WHERE name='$name'");
while( $row = mysql_fetch_assoc($result) ){
$name_found=true;
if($row['udid'] != $udid){
$udid_mismatch=true;
}
break;
}

if($name_found && $udid_mismatch ){
echo 'Fail';
} else if($name_found) {
echo 'Success';
} else {
//Insert the username
}

请务必将查询中的“表”替换为您正确的表名。

关于php - 在数据库中搜索字符串是否存在(php、mysql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6124837/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com