php - 使用 MYSQLI 的多个准备好的语句

标签 php mysql

我刚刚搬到 mysqli,我想知道:我可以使用准备好的语句进行多个查询吗?

这是示例:我需要检查该用户名是否也在表“future_user”中,而不仅仅是像现在一样在“user”中。为了代码的吸引力,我不想再次编写相同的函数,只是将“user”更改为“future_user”。

function isFreeUsername($string)
{
$DB = databaseConnect();

$stmt = $DB->prepare("SELECT * FROM user WHERE username=? LIMIT 1");
$stmt->bind_param("s", $username);

if(isset($_SESSION) && isset($_GET['username']))   $username = $_GET['username'];
else                                               $username = $string;

$stmt->execute();
$stmt->store_result();

if($stmt->num_rows > 0)   $return = 0;
else                      $return = 1;  

$stmt->close();
$DB->close();

return $return;

}

表格:

CREATE TABLE user
(
uid      mediumint(6) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,

username varchar(15) NOT NULL,
password varchar(15) BINARY NOT NULL,
mail     varchar(50) NOT NULL,

name     varchar(50) NOT NULL,
surname  varchar(50) NOT NULL,
birth    char(10) NOT NULL,
sex      tinyint(1) unsigned NOT NULL default 1,

address  varchar(50) NOT NULL,
city     varchar(50) NOT NULL,
zip      char(5) NOT NULL,
province varchar(50) NOT NULL,
country  tinyint(3) NOT NULL,

number1  varchar(50) NOT NULL,
number2  varchar(50) NOT NULL,

last_login   TIMESTAMP,    
registered   TIMESTAMP,
online       tinyint(1) unsigned default 0,

admin           tinyint(1) unsigned default 0,
comment_allowed tinyint(1) unsigned default 0,
post_allowed    tinyint(1) unsigned default 0

) ENGINE=InnoDB;

CREATE TABLE future_user
(
username varchar(15) NOT NULL,
password varchar(15) BINARY NOT NULL,
mail     varchar(50) NOT NULL,

name     varchar(50) NOT NULL,
surname  varchar(50) NOT NULL,
birth    char(8) NOT NULL,
sex      tinyint(1) unsigned NOT NULL,

address  varchar(50) NOT NULL,
city     varchar(50) NOT NULL,
zip      char(10) NOT NULL,
province varchar(50) NOT NULL,
country  varchar(50) NOT NULL,

number1  varchar(50) NOT NULL,
number2  varchar(50) NOT NULL,

code     char(10) NOT NULL

) ENGINE=InnoDB;

最佳答案

"SELECT * 
 FROM user u
 LEFT JOIN future_user fu on fu.id = u.id 
 WHERE u.username=?
 LIMIT 1"

在没有看到更多你的表结构的情况下,这是我能想到的。 这也将在未来用户中选择该用户

关于php - 使用 MYSQLI 的多个准备好的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6171081/

相关文章:

php - Mysql 查询 - 使用连接/联合等

php - 如何在 Ubuntu 15 上的 Apache 服务器上配置虚拟主机

php - SELECT 记录 WHERE 行在特定列上有差异

mysql - 为什么Mysql在join另一个表B时对表A使用全表扫描?

用于存储在字符串中的小数的 MySQL Round() 函数

php - nginx-php 不适用于自己构建的 nginx

php - 如何Mysql一次插入到2个表中,其中表A具有唯一的用户ID,表B具有重复的用户ID

php - 在网页上显示加载时执行的 PHP 文件的输出/回显

mysql - 根据输入的日期更新数据库

php - php 中的 mysql_insert_id() 不返回最后插入的 ID?