简体   繁体   English

插入mysql否则使用select更新?

[英]insert into mysql else update using select?

Can someone please help, I'm trying to make this script select the values from my mysql table where appropriate and update them if they exist, and if they don't exist then to insert them instead. 有人可以帮忙吗,我正在尝试使此脚本从mysql表中的适当位置选择值,并更新它们(如果它们存在),如果不存在,则改为插入它们。

Can someone show me where I'm going wrong thanks. 有人可以告诉我我要去哪里了谢谢。

    <?php
        require_once("session.php"); 
        require_once("functions.php");
        require('_config/connection.php');

        session_start();

        include '_config/connection.php'; 

        $height_ft = $_POST['height_ft'];
        $height_in = $_POST['height_in'];
        $weight_st = $_POST['weight_st'];
        $weight_lb = $_POST['weight_lb'];    

        $result = mysql_query("SELECT height_ft FROM ptb_stats WHERE id=".$_SESSION['user_id']."");

        $result2 = mysql_query("SELECT height_in FROM ptb_stats WHERE id=".$_SESSION['user_id']."");

        $result3 = mysql_query("SELECT weight_st FROM ptb_stats WHERE id=".$_SESSION['user_id']."");

    $result4 = mysql_query("SELECT weight_lb FROM ptb_stats WHERE id=".$_SESSION['user_id']."");

    if( !$result ) { 
       echo "The username you entered does not exist"; 
    } else if( $height_ft != mysql_result( $result, 0 ) ) { 
       echo "";    

         $sql = mysql_query("UPDATE ptb_stats SET height_ft='$height_ft' WHERE id=".$_SESSION['user_id'].""); 

         $sql = mysql_query("UPDATE ptb_stats SET height_in='$height_in' WHERE id=".$_SESSION['user_id'].""); 

         $sql = mysql_query("UPDATE ptb_stats SET weight_st='$weight_st' WHERE id=".$_SESSION['user_id'].""); 

         $sql = mysql_query("UPDATE ptb_stats SET weight_lb='$weight_lb' WHERE id=".$_SESSION['user_id']."");    

         mysql_query("INSERT INTO ptb_stats (user_id, height_ft) VALUES (".$_SESSION['user_id'].", ".$height_ft.")"); 

         mysql_query("INSERT INTO ptb_stats (user_id, height_in) VALUES (".$_SESSION['user_id'].", ".$height_in.")"); 

         mysql_query("INSERT INTO ptb_stats (user_id, weight_st) VALUES (".$_SESSION['user_id'].", ".$weight_st.")");

         mysql_query("INSERT INTO ptb_stats (user_id, weight_lb) VALUES (".$_SESSION['user_id'].", ".$weight_lb.")");
    }

    if( $sql ) { 
        $_SESSION['edit_done']="<div class=\"infobox-edit-done\"><strong>Thank You -</strong> Your Details were changed.</div>"; 
        header("Location: {$_SERVER['HTTP_REFERER']}");
    } else { 
        $_SESSION['edit_done2']="<div class=\"infobox-edit-done\"><strong>Oooops! -</strong> That didn't work. Try again.</div>"; 
        header("Location: {$_SERVER['HTTP_REFERER']}");
    }  
?>

There is an option in MySQL for an update or insert using ON DUPLICATE KEY UPDATE which may more concisely solve your question. MySQL中有一个使用ON DUPLICATE KEY UPDATE进行更新或插入的选项,它可以更简洁地解决您的问题。

http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

For you query would look something like: 对于您的查询将类似于:

$sql=mysql_query("INSERT INTO ptb_stats (user_id, height_ft) 
VALUES (".mysql_real_escape_string($_SESSION['user_id']).", "
         .mysql_real_escape_string($height_ft).") 
ON DUPLICATE KEY UPDATE user_id = ".mysql_real_escape_string($_SESSION['user_id']).");

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM