php如何自动读取第一个status为0的写法 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
miao
V2EX    PHP

php如何自动读取第一个status为0的写法

  •  
  •   miao Dec 31, 2013 4268 views
    This topic created in 4503 days ago, the information mentioned may be changed or developed.
    我是php菜鸟 请问一个问题

    我的mysql 设计举例如下

    id name status
    1 jack 1
    2 kate 1
    3 james 0
    4 brown 0
    5 Alston 0
    6 Charles 1
    7 Mark 0
    8 Sarah 1


    我一次只运行一下xxx.php

    那么xxx.php 会自动读取 第一个 status=0 的id 和 name, 然后赋值status = 1

    我第二次运行xxx.php 还是读取第一个 status=0 这个状态下的 id 和 name

    每次xxx.php只读取一行 mysql数据

    请问这个php和sql 怎么写?



    PS:我不要循环读取
    13 replies    1970-01-01 08:00:00 +08:00
    Sunyanzi
        1
    Sunyanzi  
       Dec 31, 2013
    事实上我没能完全看懂你的提问 ... 我能看懂的部分是一个 MySQL 问题 ...

    SELECT `id`,`name` FROM `tablename` WHERE `status`=0 ORDER BY `id` ASC LIMIT 0, 1

    赋值 status = 1 我没明白 ... 不就是一条 UPDATE 语句么 ..?
    likexian
        2
    likexian  
       Dec 31, 2013
    update `table` set `status`=1 where status=0 limit 1
    miao
        3
    miao  
    OP
       Dec 31, 2013
    @Sunyanzi 感谢您的回答, 我确实不知道如何形容这个超级简单的问题, 您这条sql语句应该能用,

    后面 ORDER BY `id` ASC LIMIT 0, 1 这句话

    意思是不是 按`id`的升序排序, LIMIT 0, 1 就是只读取一条数据?
    miao
        4
    miao  
    OP
       Dec 31, 2013
    @likexian @likexian
    谢谢, 赋值 status = 1 确实就是

    update `table` set `status`=1 where status=0 limit 1

    这句话就是只赋值第一个status=0?
    66beta
        5
    66beta  
       Dec 31, 2013
    这属于SQL问题,楼主可以翻手册慢慢做,自己搞出来的比较有趣
    可以现在数据库GUI上跑一下,成功了再贴到PHP里面~
    arbipher
        6
    arbipher  
       Dec 31, 2013
    把cursor保存下来,但是我不知道这个在PHP里面怎么实现。。。
    我顺路问一下,PHP怎么实现全局变量(就像JSP里面Application范围的变量一样)
    zzNucker
        7
    zzNucker  
       Dec 31, 2013
    @arbipher 如果include了用global
    arbipher
        8
    arbipher  
       Dec 31, 2013
    @zzNucker 不是global吧。我没理解错的话,php的globa范围l应该等效于jsp的request范围,php global变量只在这一次请求中有效,下一次请求的时候会重新初始化。
    msg7086
        9
    msg7086  
       Jan 1, 2014
    @arbipher 因为以前PHP每次接受请求的时候都会产生一个新的php-cgi进程。既然每次都产生新进程了,那全局变量的生存周期当然只到脚本结束的时候就结束了。

    要持久化,就得用第三方的东西。apc/mc/radis/mysql/cookie/session等等
    arbipher
        10
    arbipher  
       Jan 1, 2014
    @msg7086 我去翻了下文档,可以用Semaphore。shm_get_var, shm_put_var。
    http://www.php.net/manual/en/ref.sem.php
    感觉这和读写数据库也没啥区别的。。。
    msg7086
        11
    msg7086  
       Jan 1, 2014
    @arbipher 嗯?信号量?应该是用来Linux下跨进程通信的?

    我觉得一般环境下还是用上面提的那些吧……
    zzNucker
        12
    zzNucker  
       Jan 1, 2014
    @arbipher 你这是啥 - - 是同步用的玩意吧, 一般你要跨request的话php确实难的,基本要靠用外部存储。。
    arbipher
        13
    arbipher  
       Jan 1, 2014
    @zzNucker
    这个问题我是在SAE上写PHP是遇到的。
    我要在服务器初始化的时候,从数据库读些东西放到memcache里面。函数是memcache_set($mmc,"foo","bar")。
    为了防止memcache的数据被洗掉,任何一个请求,只要memcache_get失败,就去数据库里面读一次,把结果存到memcache里。
    问题是我担心,这个“读数据库存到memcache”的操作不是原子的。当时就在想全局锁的事情。

    LZ这个帖子让我想到了这件事情。所以我的潜意识里,开始解答我自己的疑惑了。

    其实我也不知道,这个操作是不是一定要原子。可能是我想多了吧。
    至于LZ这个问题,利用mysql,或者Semaphore都能解决吧,绕了一下而已。
    但是PHP下,服务器级别的全局变量的最直接的方法,我还是不知道。
    About     Help     Advertise     Blog     API     FAQ     Solana     2698 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 38ms UTC 14:50 PVG 22:50 LAX 07:50 JFK 10:50
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86