首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP/Mysql条件语句

问PHP/Mysql条件语句
EN

Stack Overflow用户
提问于 2010-11-13 06:04:45
回答 2查看 1.3K关注 0票数 0

我有一个简单的页面/数据库设置,您可以在其中增加或减少个人A或个人B的总积分。

我得到了一些帮助,将一些东西放到他们自己的函数中来清理它们。我是php和mysql的新手;阅读我的所有内容我理解所有的逻辑,我只是想不出如何完成它,就像现在一样,任何按钮都会加分;我也需要让减点按钮工作。

我的数据库是表'user‘,其中包含点和名称

这就是我所拥有的:

代码语言:javascript
复制
<?php
function print_r_dump( $val )
{
echo '<pre>';
print_r( $val );
echo '</pre>';
}

//if ( isset( $_POST ) || isset( $_POST['Add point'] ) )
if ( isset( $_POST ) )
{

//Prints what's in post
print_r_dump( $_POST );

$str = "select * from user where name = '";
$str .= $_POST['person'];
$str .= "'";

$link = mysql_connect('mysql.xxxxx.net', 'xxxxx', 'xxxxx');
mysql_select_db('xxxxx_points', $link);
$result = mysql_query( $str , $link);

$row = mysql_fetch_assoc($result) ;
$points = $row['points'];

$str = 'update user set points = '. ($points+1) . ' where name = \''. $_POST['person'] . '\'';
$result = mysql_query( $str , $link);
}




$link = mysql_connect('mysql.xxxxx.net', 'xxxxx', 'xxxxx');
mysql_select_db('xxxxx_points', $link);

$str = "SELECT points FROM user WHERE name='Person A'" ;
$str = "SELECT * FROM user ";
$result = mysql_query( $str , $link);


$results = array();
while ( $row = mysql_fetch_assoc($result) )
{
$results[ $row['name'] ] = $row['points'];
}

?>

Person A's count: <?php echo $results['Person A']; ?>
<br>


<form method="post" action="index.php">
<input type="submit" name="submit_button" value="Add point" />
<input type="submit" name="submit_button" value="Subtract point" />
<input type="hidden" name="person" value="Person A" />
</form>

<br>

Person B's count: <?php echo $results['Person B']; ?>
<br>

<form method="post" action="index.php">
<input type="submit" name="submit_button" value="Add point" />
<input type="submit" name="submit_button" value="Subtract point" />
<input type="hidden" name="person" value="Person B" />
</form>

<?

print_r_dump( $results  );

?>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-13 07:01:01

看起来您也不一定需要第一个SQL查询。您可以使用数据库中的当前值并使其自动更新,例如,只要点字段是数值而不是字符串。在代码的主要PHP部分尝试这样做。

代码语言:javascript
复制
<?php
function print_r_dump( $val )
{
echo '<pre>';
print_r( $val );
echo '</pre>';
}

if ( isset( $_POST ) )
{

//Prints what's in post
print_r_dump( $_POST );

$link = mysql_connect('mysql.xxxxx.net', 'xxxxx', 'xxxxx');
mysql_select_db('xxxxx_points', $link);

$str = "";

    if ($_POST['submit_button']=='Add point')
    {
    $str = 'update user set points = points+1 where name = \''. $_POST['person'] . '\'';
    }
    else if ($_POST['submit_button']=='Subtract point')
    {
    $str = 'update user set points = points-1 where name = \''. $_POST['person'] . '\'';
    }
    if ($str)
    {
    $result = mysql_query( $str , $link);
    }
}

$str = "SELECT points FROM user WHERE name='Person A'" ;
$str = "SELECT * FROM user ";
$result = mysql_query( $str , $link);


$results = array();
while ( $row = mysql_fetch_assoc($result) )
{
$results[ $row['name'] ] = $row['points'];
}

?>
票数 1
EN

Stack Overflow用户

发布于 2010-11-13 06:22:09

有很多错误:

  • 您不必在每次运行查询时都创建新链接。
  • 此行根本不安全:$str .= $_POST‘’person‘;任何人都可以破解您的代码。
  • 您应该检查结果(从mysql返回)是否有效。

我试着清理一下。这里可能有一些错误(我没有测试),但请演示我刚才所说的:

代码语言:javascript
复制
<?php
function print_r_dump( $val )
{
echo '<pre>';
print_r( $val );
echo '</pre>';
}
$link = mysql_connect('mysql.xxxxx.net', 'xxxxx', 'xxxxx');
mysql_select_db('xxxxx_points', $link);


if ( isset( $_POST ) )
{
$str = "select * from user where name = '";
$str .= $_POST['person'];
$str .= "'";

$result = mysql_query( $str , $link);

if($result) {
    $row = mysql_fetch_assoc($result) ;
    $points = $row['points'];
    if(condition for adding) { // probably if(isset($_POST[submit_button_add))
        $str = 'update user set points = '. ($points+1) . ' where name = \''. $_POST['person'] . '\'';
        $result = mysql_query( $str , $link);
    } else if(condition for subtracting){// probably if(isset($_POST[submit_button_sub))
        $str = 'update user set points = '. ($points-1) . ' where name = \''. $_POST['person'] . '\'';
        $result = mysql_query( $str , $link);
    }
    $str = "SELECT * FROM user WHERE 1";
    $result = mysql_query( $str , $link);
    if($result) {
        $results = array();
        while ( $row = mysql_fetch_assoc($result) )
        {
            $results[ $row['name'] ] = $row['points'];
        }
    }
}

?>

Person A's count: <?php echo $results['Person A']; ?>
<br>


<form method="post" action="index.php">
<input type="submit" name="submit_button_add" value="Add point" />
<input type="submit" name="submit_button_sub" value="Subtract point" />
<input type="hidden" name="person" value="Person A" />
</form>

<br>

Person B's count: <?php echo $results['Person B']; ?>
<br>

<form method="post" action="index.php">
<input type="submit" name="submit_button" value="Add point" />
<input type="submit" name="submit_button" value="Subtract point" />
<input type="hidden" name="person" value="Person B" />
</form>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4169479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档