2

如果 user_id 有一行,那么我想更新,如果不插入(但我被告知使用替换)。在表中有 id (这是主键,auto inc)和 user_id (索引,会话相关)。我有一个表格,当数据更改时,它应该在数据库中为会话中的特定用户更改,否则它只是为会话中的特定用户添加

if (empty($err)) {

        $thesis_Name = mysql_real_escape_string($_POST['thesis_Name']);
        $abstract = mysql_real_escape_string($_POST['abstract']);



$query="UPDATE thesis SET thesis_Name ='$thesis_Name',
abstract='$abstract' WHERE id='$_SESSION[user_id]'
IF ROW_COUNT()=0
REPLACE INTO  thesis (thesis_Name,abstract)VALUES ('$thesis_Name', '$abstract')
";

mysql_query($query) or die();

 // query is ok?
 if (mysql_query($the_query, $link) ){

 // redirect to user profile
 header('Location: myaccount.php?id=' . $user_id);
        }

有了这个页面就死了。

编辑:

`thesis` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`thesis_Name` varchar(200) NOT NULL,
`abstract` varchar(200) NOT NULL,

 PRIMARY KEY (`id`),
 KEY `user_id` (`user_id`)
 )

非常感谢

4

4 回答 4

0
INSERT
INTO    thesis (id, abstract, thesis)
VALUES  ('$_SESSION[user_id]', '$abstract', '$thesis_Name')
ON DUPLICATE KEY
UPDATE
        abstract = VALUES(abstract),
        thesis_Name = VALUES(thesis_Name)
于 2012-04-27T20:15:16.093 回答
0
于 2012-04-27T20:17:07.830 回答
0

您可以使用准备好的语句来执行此操作。您可以查看示例 sql ;

DROP PROCEDURE IF EXISTS `UPDATETHESIS`

|

CREATE PROCEDURE `UPDATETHESIS` (IN _id VARCHAR(50), IN _thesis_name VARCHAR(50), IN _abstract VARCHAR(50))

    NOT DETERMINISTIC

    CONTAINS SQL

    SQL SECURITY INVOKER

IF EXISTS (SELECT * FROM thesis WHERE id = _id)
    BEGIN
        UPDATE thesis SET thesis_Name = _thesis_name,
        abstract = _abstract WHERE id = _id    
    END
ELSE
    BEGIN
       INSERT INTO thesis (thesis_Name,abstract) VALUES (_thesis_name, _abstract)
    END

你可以这样称呼CALL UPDATETHESIS(userid, thesis_name, abstratc);

于 2012-04-27T20:20:03.260 回答
0

您的代码中存在一些问题。首先,您不必在同一个查询中进行插入和替换:如果没有要替换的行,替换将插入(此外,我什至不确定您使用的 sql 语法是否正确)...

然后你做一个mysql_query($query) or die()可能是你的代码死的地方(可能是因为你使用的 sql 语法可能不正确)。

在那之后,您再次执行 mysql_query,这将再次重新执行查询。无论如何,如果您的查询不起作用,那么您的代码将在前一行中消失......

你能做的是

$query = "REPLACE INTO blablabla";
if (!mysql_query($query))
echo "the query failed";
else header ("location:blabla");

但是您的查询应该提到您想要更新的 user_id 像这样 REPLACE INTO thesis (id, thesis_Name, abstract) VALUES ('{$_SESSION[userid]}', '$thesis_name', '$abstract');

于 2012-04-27T20:20:28.420 回答