mysql php中表的大小
我有一个table calle users\u会话,我希望它只能容纳8行。我正在尝试实现我的代码,以便如果行数为8,则不添加用户,但如果行数较少,则添加用户。问题在于,while循环之后的代码(而不是内部的代码)似乎不起作用 基本上,我想尝试实现的是,用户已经在游戏中被允许的表中,如果他不在,并且表已满,则会显示一条消息,表示已满,如果用户不在表中,但未满,则会将其添加到表中 谢谢,希望有人能帮助我mysql php中表的大小,php,mysql,Php,Mysql,我有一个table calle users\u会话,我希望它只能容纳8行。我正在尝试实现我的代码,以便如果行数为8,则不添加用户,但如果行数较少,则添加用户。问题在于,while循环之后的代码(而不是内部的代码)似乎不起作用 基本上,我想尝试实现的是,用户已经在游戏中被允许的表中,如果他不在,并且表已满,则会显示一条消息,表示已满,如果用户不在表中,但未满,则会将其添加到表中 谢谢,希望有人能帮助我 <?php session_start(); $member_id = $_SESSION
<?php session_start();
$member_id = $_SESSION['member'];
// establishing connection to the database
require ('database_connection.php');
$my_database = mysql_select_db("roulette") or die("Database wasn't found!");
// counting the number of rows in the users_session table
$count_rows = "SELECT * FROM users_session";
$count_rows_query = mysql_query($count_rows) or die("<p> <font face=verdana> selecting rows failed!</p>");
$number_of_rows = mysql_num_rows($count_rows_query) or die("<p> <font face=verdana> Counting rows failed!</p>");
// getting the contents of the table users_session
$query = "SELECT * FROM users_session";
$select_query = mysql_query($query) or die("<p> <font face=verdana> Fetching rows failed!</p>");
$isAlready = false;
// fetch and check every row in the table
while ($rows = mysql_fetch_array($select_query))
{
// if the user is already inside the session
if ($member_id == $rows['member_id'])
{
$isAlready = true;
print "<script> alert('You are already listed in the session') </script>";
include ('one_number_bet.php');
}
else
{
$isAlready = false; //user is not in the session
}
}
print "test";
print $number_of_rows;
// if user is not in the session
if ($isAlready = true)
{
// checking if the table is full
if ($number_of_rows < 8)
{
print "<script> alert('The session is full, please try again later') </script>";
include ("type_of_bet.php");
}
// table is not full
else
{
// add the user in the session
$query = "INSERT INTO users_session (member_id) VALUES ('$member_id');";
$insert_query = mysql_query($query) or die("<p> <font face=verdana> Insertion failed!</p>");
print "<script> alert('You have been successfully added to the session') </script>";
include ("one_number_bet.php");
}
}
?>
要知道表中的行数,只需执行以下查询:
SELECT count(*) FROM your_table
在PHP中,您需要执行以下操作:
$res = mysql_query("SELECT count(*) FROM your_table");
$nb = mysql_result($res, 0);
循环外的代码不起作用的原因是,当变量在循环外时,您检查的变量永远都是假的。在循环内部,它变为true,但该true变量不会跳出循环。将所有IF语句放入While循环,或将$isAlready变量放入$\u会话变量,以便在循环外部使用。以下是一个可以帮助您识别活动会话和用户的查询 由于我不喜欢发布未经测试的代码,并且a不会使用“mysql_*例程”,所以我将其转换为“mysqli” 更改“newActiveUser”变量以查看新结果 它经过测试
<?php
/*
* return useful information about active users:
*
* 1) active_sessions_count => number of active 'admin' users
* 2) known_user_was_found => whether the username is is known
* 3) active_user_was_found => where the supplied user name is active
*
*/
// connection
$db = new mysqli('localhost', 'test', 'test', 'testmysql');
$newActiveUser = 'user9';
// makes the query easier to read and maintain - no other reason
$activeUsersSql = <<<'EOD'
SELECT COUNT(*) AS active_sessions_count,
known_user_was_found,
active_user_was_found
FROM user_session,
(SELECT COUNT(users.username) AS known_user_was_found
FROM users
WHERE users.username = ?) AS known_user,
(SELECT COUNT(user_session.username) AS active_user_was_found
FROM user_session
WHERE user_session.username = ?) AS active_user
EOD;
// end of query
$query = $db->prepare($activeUsersSql);
if ($db->errno) {
echo '<br/>prepare error: ', $db->errno, ' : ', $db->error, '<br/>';
}
// bind input params
$query->bind_param('ss', $newActiveUser, $newActiveUser);
if(!$query->execute()) {
echo '', $db->errno, ' : ', $db->error, '<br/>';
}
// get the results
$results = $query->get_result();
if ($db->errno) {
echo '<br/>results error: ', $db->errno, ' : ', $db->error, '<br/>';
}
$row = $results->fetch_assoc();
// show results
var_dump($row);
活动会话:
username
----------
user1
user2
user3
user4
user5
user6
user7
user8
对不起,我可能没有回答这个问题?另外,为什么要调用同一个查询两次?有一个名为num_rows的数组属性可用于此操作。他们会告诉你停止使用mysql函数,转而使用mysqli或PDO。一旦你有了结果,你可以在上面调用fetch_assoc,不需要循环,然后执行if$rows->num_rows<9对不起,我不明白,因为这是我第一次使用php和mysql,我正在通过互联网学习。您所说的函数不是我正在使用的mysql\u num\u rows$count\u rows\u查询,它返回行数。但是如果我删除了循环,那不就好像只获取第一行吗?谢谢你的回复什么是?在我的代码中的问题是我必须检查用户是否已经在表中列出。我得到行数的那部分还可以,因为我意识到函数mysql_num_rows返回一个字符串,我相应地修改了代码。我不明白的是如何实现不同的if语句,以确保:-如果用户在表中,他将被带到另一个页面-如果用户不在表中,并且表已满,他将被拒绝访问-如果表未满,并且有用户希望访问,他将被添加到php中的表中,则查询无法工作返回资源5,我不知道它是什么
username
----------
user1
user2
user3
user4
user5
user6
user7
user8