我使用的是mySQL InnoDB表。用php脚本查询Mysql数据库。当用户选择特定表中的一条记录时,我想锁定此记录,并只允许其他用户读取进程。所以我试着用
SELECT * FROM parent WHERE NAME = 'Jones' LOCK IN SHARE MODE;
所以我的问题是,当用户B尝试选择相同的记录时,如何知道该记录被锁定,当用户A尝试更新记录时,如何授权该操作。
感谢你的帮助
我正在尝试对多个数组变量运行查询,并在表中显示结果。
用户选择一条或多条记录,包括BOL和CONTAINER。这些选择被放在它们自己的数组中,并且它们总是相等的数量。
<?php
$bolArray = explode(',', $_POST['BOL']);
$containerArray = explode(',', $_POST['CONTAINER']);
$count = count($bolArray); // to get the total amount in the arrays
我
我的桌子上有100张活动记录--汽车。用户已决定降级他们的帐户,现在有资格只有5个活动记录。我需要将95条记录(最早的第一条)的过期日期设置为当前的时间戳。如果您包含一些cakephp提示,我如何在MySQL中做到这一点?谢谢(但我将仅感谢您提供的SQL提示)。
下面是我尝试过的内容,但我得到了一条错误消息,说明mySQL在子查询中不支持限制。
UPDATE cars
SET archived = NOW()
WHERE id NOT IN (
SELECT id
FROM cars
ORDER BY created DESC LIMIT 5
)
我有一个MYSQL的数据库,它有一个聊天表,看起来像这样。
我使用这个查询来获取这些记录
SELECT * FROM (
SELECT * FROM `user_chats`
WHERE sender_id =2 OR receiver_id =2
ORDER BY id DESC
) AS tbl
GROUP BY sender_id, receiver_id
但我的要求只有5,4个ID的记录。基本上,我的需求id获取2个用户之间的最后一次对话。在这里,2 &3个用户对话有2条记录,我们只需要最后一条记录,即id = 5,这里不需要id =2。
那
我创建了一个函数changeIp()来禁用一条记录并返回一条新记录。如你所见,我使用的是3SQL查询。
有没有更好的方法来减少SQL查询的数量?
function changeIp() {
// Find 1 record which is not disabled
$SQL = "SELECT * FROM ip WHERE disable = 0 order by id limit 1";
$qIp = mysql_query($SQL) or die(mysql_error());
$qrow = mysql_fetch_assoc($q
表的结构是:
user
-----
id
video
------
id
user_views
----------
id
user_id
video_id
create_date
而user_views可以复制,为了防止数据变得非常庞大,我想限制user_views记录:
每个用户最多可以记录20 user_views,如果超过,它将取代最古老的记录,以先出先出的方式。
问题是,如何构造插入查询?
现在我的方法是使用PHP
计算特定用户的行数。
如果> 20,请更新最后一条记录(由create_date命令)
否则,插入新记录。
它可以工作,但是我想要一种更高性
我已经和白痴玩了几天了,渐渐地,我成功地让它真正开始执行查询。不过,我遇到了一些奇怪的事情,我搞不懂。find_many()函数只返回一条记录,它始终是数据库中的最后一条记录。例如,我通过mysqli执行以下查询,数据库中有所有16个用户:
// connection is just a singleton instance to manage DB connections
$connection->getRawInstance()->getRawConnection()->query('select * from users'));
// The
我使用一个MySql表来存储当前登录用户的会话记录。一旦用户注销,我会更新同一条记录中的几个字段,并标记(撤销)它,表示不应该再次使用它。因此,每一个LogIn都会创建一个新的记录。这符合我的目的,但事实证明,这张桌子会越来越大。
存储会话的标准方法应该是什么?那些被撤销的应该存储在一个单独的表中,还是应该删除或者留在同一个表中?
我考虑将数据保留在同一个会话表中。在查询特定记录时,我使用两个字段进行查询:(idPeople (不是唯一的)和撤消(0或1)),例如SELECT * FROM session WHERE idPeople = "someValue" AND rev
我有这个mysql查询
select
id,
FROM_UNIXTIME(`placedate`) as placedate_mysqldate
from
orders HAVING placedate_mysqldate < '2011-08-01 00:00:00'
因此,查询返回了大约1000条记录,我想在同一条查询语句中删除它。
因为placedate_mysqldate是用户定义的,并且不存在于数据库中,所以我不能使用普通的delete语句,比如
delete * from orders where placedate_mysql &l
我正在运行一个为我的用户提供下载服务的脚本。我想在每个字节的级别上监控他们的流量,并且我在$bytes中保存了他们下载的字节数。我希望将其记录到我的数据库中,并使用以下函数:
register_shutdown_function(function() {
global $bytes;
/* Save the traffic to the database */
$db = new PDO('mysql:host=localhost;dbname=test', 'root', '');
$st = $db->
在mysql查询中,我如何找出哪些记录在24小时内被更改/更新。
我有一个带有时间戳的mysql表,缺省值为CURRENT_TIMESTAMP。我正在使用PHP和Mysql.when用户编辑一条记录。我有一个字段activitytime,缺省值为CURRENT_TIMESTAMP,我想获得所有更改过的记录
SELECT * FROM news WHERE activitytime < 24 hours
我试过了,但没有成功
select * from news where activitytime >= now() - INTERVAL 1 DAY order by act
这不是一个完整/正确的MySQL查询仅伪代码:
Select *
from Notifications as n
where n.date > (CurrentDate-10 days)
limit by 1
FOR UPDATE
状态:如果将FOR UPDATE与使用页锁或行锁的存储引擎一起使用,则查询检查的行将被写锁定,直到当前事务结束
这里是只返回一条被MySQL锁定的记录,还是它必须扫描所有记录才能找到这条记录?
我希望将一条记录插入到表中,并检索已插入的记录的ID,该ID设置为auto_increment。但是,存在这样一种可能性:在插入和检索操作之间,另一个用户可能会将另一个数据插入到表中。这意味着,我可能检索错误的记录的ID。我如何避免这个问题在MySQL?谢谢。
我使用的查询是SELECT CustomerID FROM Customers order by CustomerID desc limit 1;
如何查询MySQL数据库以确定用户是否已连续登录30天或100天?同样也适用于其他用户操作。
假设如下所示的DB表,为当天活动的每个用户每天创建一条记录。
我如何查询SELECT * WHERE user_id = 1 AND action = login,并找出是否有30天或100天的登录,其中的日子是连续的,没有休息日在其中?
用户统计表
id
user_id
dateTime
action (login, made post, up voted, down votes, made comment, etc...)
我通过首先创建一个临时表并用select语句中的数据填充它来查询mysql数据库表。
为了测试它,我使用了一个已知的数据库id,并测试它是否正确地获得了下一条和前一条记录。
以下是我的函数
function get_next($id){
$db = new PDO('mysql:host=localhost;dbname=world', 'root', '');
$db->query("CREATE TEMPORARY TABLE nr AS SELECT ID,Name,Population FROM city W
是否可以在一条记录中存储到另一条记录的“链接”?例如:
table USERS
id name link
-------------------------------------------------------
1 user1 [link to record with id=4 in table info]
所以,在PHP中,我可以这样做:
// connect to the database etc....
$query = "select * from users where id=1";
$result =
从mysql数据库中只删除一条记录的正确方法是什么?此查询仅用于选择一条记录。
SELECT * FROM Customers WHERE Country='Mexico' ORDER BY Country ASC LIMIT 1;
当替换select删除不起作用的.but时,上述查询将正确运行。
DELETE FROM Customers WHERE Country='Mexico' ORDER BY Country ASC LIMIT 1;
我怎么才能修好它?
我通常使用queryRow来获取单个记录。例如:-
$lastReport = Yii::app()->db->createCommand(
'SELECT * FROM report ORDER BY created DESC'
)->queryRow();
我查看了MySQL日志,以了解使用了哪个查询。
SELECT tbl_report.* FROM report ORDER BY created DESC
看起来Yii正在检索表中的所有记录并返回第一条记录。
所以我认为我们应该在使用queryRow的时候使用LIMIT 1。例如:-
$las
在我的程序中,我启动一个SQL查询并返回一个结果资源。然后,我使用mysql_fetch_array()函数迭代这个结果资源的行,并使用每一行字段的内容来构造进一步的SQL查询。
启动第二个查询的结果是我想要的第一组结果。但是,由于这样做产生的结果数量并不多,所以我希望通过删除用于进行查询的最后一条记录来降低搜索的针对性。
例如,产生我想要的第一组结果的查询可以是:
SELECT uid FROM users WHERE (gender=male AND relationship_status=single
AND shoe_size=10)
然后,我想删除最后一条记录,以便我的查询变成: