开发者

PHP Update query

I have written a PHP class which will update 4 fields of a certain row in a table. The row is decided by a session var 'user' (which is unique). It's not working, but i'm not sure if it is because of the query or the class itself. So i'm first gonna ask you guys if there are any errors in this query (there probaply are) and when the query is correct, i'll see if the class itself has errors as well.

Query:

UPDATE tblRegistrat开发者_开发知识库ie(lengte, gewicht, bmi geluk) WHERE `gebruikersnaam` = '" . $_SESSION['regain-user'] . "'
        VALUES(
        '".mysqli_real_escape_string($conn, $this->Lengte_update)."',
        '".mysqli_real_escape_string($conn, $this->Gewicht_update)."',
        '".mysqli_real_escape_string($conn, $this->BMI_update)."',
        ''".mysqli_real_escape_string($conn, $this->Geluk_update)."',
        );


The quotes look funny here, but I think your problem is a trailing comma , after the last param:

''".mysqli_real_escape_string($conn, $this->Geluk_update)."',
                                                          ^^^^^


Last line:

    ''".mysqli_real_escape_string($conn, $this->Geluk_update)."',
    ^^//fix the double qoute and make it single '


This is what an UPDATE query should look like.

UPDATE tblRegistratie
SET lengte=mysqli_real_escape_string($conn, $this->Lengte_update),
    gewicht=mysql...etc
    `bmi geluk`=...etc
WHERE `gebruikersnaam` = '" . $_SESSION['regain-user'] . "'

Yours looks nothing like that.


The correct syntax for UPDATE in MySQL would be something like::

$sql = "UPDATE tblRegistratie SET
    lengte = '".mysqli_real_escape_string($conn, $this->Lengte_update)."',
    gewicht = '".mysql_real_escape_string($conn, $this->Gewicht_update)."',
    bmi = '".mysql_real_escape_string($conn, $this->BMI_update)."',
    geluk = '".mysqli_real_escape_string($conn, $this->Geluk_update)."'
    WHERE gebruikersnaam = '". $_SESSION['regain-user'];


You need to have your where clause after the values you're setting. Also, it sounds like you have some punctuation issues.

Consider the following rewrite for general easier-to-read goodness:

$query = 'UPDATE tblRegistratie
    SET `lengte` = "' . mysqli_real_escape_string($conn, $this->Lengte_update) . '",
        `gewicht` = "' . mysqli_real_escape_string($conn, $this->Gewicht_update) . '",
        `bmi` = "' . mysqli_real_escape_string($conn, $this->BMI_update) . '",
        `geluk` = "' . mysqli_real_escape_string($conn, $this->Geluk_update) . '"
    WHERE `gebruikersnaam` = "' . $_SESSION['regain-user'] . '"
';

Also, functions like sprintf() can be your friend. :)

$query = sprintf('UPDATE `tblRegistratie`
     SET `lengte` = "%s",
         `gewicht` = "%s",
         `bmi` = "%s",
         `geluk` = "%s"
     WHERE `gebruikersnaam` = "%s";', 
     mysqli_real_escape_string($conn, $this->Lengte_update),
     mysqli_real_escape_string($conn, $this->Gewicht_update),
     mysqli_real_escape_string($conn, $this->BMI_update),
     mysqli_real_escape_string($conn, $this->Geluk_update),
     $_SESSION['regain-user']
);


PHP

On the last line you have two initial single quotes.

Fix:

''".mysqli_real_escape_string($conn, $this->Geluk_update)."',

becomes

'".mysqli_real_escape_string($conn, $this->Geluk_update)."',

MySQL

Additionally, your UPDATE syntax appears to be completely invalid. Have a read through the documentation.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜