php
  • mysql
  • 2016-01-29 13 views -1 likes 
    -1

    我有一个使用工会在同一时间有两个querys工作,像这样的请求mysql_query:如何限制与工会的mysql_query

    $friends_a = mysql_query("(SELECT * FROM users WHERE id!='$user_q[id]' AND id='$friends_1_q[user_one_id]') UNION ALL (SELECT * FROM users WHERE id!='$user_q[id]' AND id='$friends_1_q[user_two_id]')");` 
    

    ,我想在一个只限制这个(两个querys限制),我会怎么做? (我已经尝试了很多我在互联网或这里找到的东西)。对不起,因为英文不好:D

    +0

    [您的脚本存在SQL注入攻击风险。](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) –

    +2

    请[停止使用' mysql_ *'functions](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php)。 [这些扩展](http://php.net/manual/en/migration70.removed-exts-sapis.php)已在PHP 7中删除。了解[编写]​​(http://en.wikipedia.org/ wiki/Prepared_statement)语句[PDO](http://php.net/manual/en/pdo.prepared-statements.php)和[MySQLi](http://php.net/manual/en/mysqli.quickstart .prepared-statements.php)并考虑使用PDO,[这真的很简单](http://jayblanchard.net/demystifying_php_pdo.html)。 –

    +2

    为每个查询添加一个“LIMIT”子句。 –

    回答

    1

    你可以将你的查询包装在parens中,并将它作为内联视图引用。例如,返回最多五行:

    SELECT v.* 
        FROM ( 
         -- original query goes here 
         ) v 
    LIMIT 5 
    

    考虑在(在LIMIT子句之前)的外部查询添加ORDER BY使结果更具有确定性。

    或者,完全沟UNION ALL操作,并且只写一个单一的查询:

    SELECT u.* 
        FROM users u 
    WHERE u.id != ? 
        AND u.id IN (? , ?) 
    ORDER BY u.id 
    LIMIT 2 
    

    供应的占位符的值:

    $user_q[id] 
    $friends_1_q[user_one_id] 
    $friends_1_q[user_two_id] 
    

    附录:

    mysql_函数已弃用。使用mysqli或PDO进行新的开发。并使用带有绑定占位符的预准备语句。

    如果这是不可能的(无论出于何种原因),请确保您包含在SQL文本中的变量的值已正确转义。

    相关问题