2

user_id の行がある場合は更新し、挿入しない場合は更新します (ただし、replace を使用するように言われました)。テーブルには、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

準備されたステートメントでそれを行うことができます.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 を実行すると、クエリが 2 回再実行されます。とにかく、クエリが機能しない場合、コードは前の行で死んでいたでしょう...

あなたができることは

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

ただし、クエリでは、この REPLACE INTO thesis (id, thesis_Name, abstract) VALUES ('{$_SESSION[userid]}', '$thesis_name', '$abstract'); のように更新する user_id について言及する必要があります。

于 2012-04-27T20:20:28.420 に答える
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 に答える