【问题标题】:fetching data invalid获取数据无效
【发布时间】:2015-11-04 14:24:31
【问题描述】:

我面临的问题是当我点击http://www.localhost/test1.php?user=10&num=10 与 num=10&user=10 无关。它显示数据库中的所有数据。如何获取关于 num 或 user 的特定数据,例如 num=5 或 6?

<?php
/* require the user as the parameter */
if(isset($_GET['user']) && intval($_GET['user'])) {

    /* soak in the passed variable or set our own */
    $number_of_posts = isset($_GET['num']) ? intval($_GET['num']) : 10; //10 is the default
    $format = strtolower($_GET['format']) == 'json' ? 'json' : 'xml'; //xml is the default
    $user_id = intval($_GET['user']); //no default

    /* connect to the db */
    $link = mysql_connect('localhost','username','pwd') or die('Cannot connect to the DB');
    mysql_select_db('marketing',$link) or die('Cannot select the DB');

    /* grab the posts from the db */
    $query = "SELECT * FROM data";
    $result = mysql_query($query,$link) or die('Errant query:  '.$query);

    /* create one master array of the records */
    $posts = array();
    if(mysql_num_rows($result)) {
        while($post = mysql_fetch_assoc($result)) {
            $posts[] = array('post'=>$post);
        }
    }

    /* output in necessary format */
    if($format == 'json') {
        header('Content-type: application/json');
        echo json_encode(array('posts'=>$posts));
    }
    else {
        header('Content-type: text/xml');
        echo '<posts>';
        foreach($posts as $index => $post) {
            if(is_array($post)) {
                foreach($post as $key => $value) {
                    echo '<',$key,'>';
                    if(is_array($value)) {
                        foreach($value as $tag => $val) {
                            echo '<',$tag,'>',htmlentities($val),'</',$tag,'>';
                        }
                    }
                    echo '</',$key,'>';
                }
            }
        }
        echo '</posts>';
    }

    /* disconnect from the db */
    @mysql_close($link);
}
?>

【问题讨论】:

    标签: php mysql json xml


    【解决方案1】:

    为了将 2 列的总和自动保存到第三列,您有 2 个选项: 1.直接从代码中保存 2. 创建触发器。

    如果您想要一个触发器 - 这就是触发器

    CREATE TRIGGER ins_sum BEFORE INSERT ON user
    FOR EACH ROW SET NEW.s3 = NEW.s1+NEW.s2;
    

    参考详细解释: https://dev.mysql.com/doc/refman/5.5/en/trigger-syntax.html

    从代码中:

    INSERT INTO users (s1,s2,s3) values (val1, val2, val1+val2)

    当然在这里你应该将 val1 和 val2 更改为你的实际值。

    【讨论】:

    • 谢谢塔塔。但如果我稍后更改 s1 或 s2 的值。 s 的值保持不变意味着它不会在值更改后立即更新。请指教
    • 要做到这一点,您需要另一个触发器。 CREATE TRIGGER ins_sum BEFORE UPDATE ON user FOR EACH ROW SET NEW.s3 = NEW.s1+NEW.s2;
    • 谢谢 :) 。您还可以指导我如何在 s2 列中生成 0 到 50 的随机数值。提前致谢
    • 你在 mysql rand() 中有一个函数。所以对于 0 50 50 - rand()*50 的值
    • SELECT * FROM data - 表示从数据库中选择所有内容,这正是发生的情况。检查此链接以获取更多信息dev.mysql.com/doc/refman/5.6/en/select.html。在您的情况下,您应该从 user=X 和 num=Y 的数据中选择 *。 (或类似的东西) 。我强烈建议将 * 替换为您需要检索的实际字段列表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-12
    • 1970-01-01
    • 2019-10-17
    • 2021-05-27
    • 2012-11-21
    • 2017-02-12
    • 2019-11-13
    相关资源
    最近更新 更多