我目前有一个MYSQL语法错误

i am very new at MYSQL and after i created this script to update a row in the table of a MYSQL Database and run it i get this error

Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '265'', Employer_VAT_number = ''45698'', Employer_Name = ''Namtax_Ltd'', Employer' at line 3

here is the code

// username and password sent from form 
    $Numb=$_POST["Numb"]; 
    $VAT=$_POST["VAT"];
    $Name=$_POST["Name"]; 
    $Addr=$_POST["Addr"]; 
    $PO=$_POST["PO"];  

    // To protect MySQL injection (more detail about MySQL injection )
    $Numb =  stripslashes($Numb);
    $VAT =   stripslashes($VAT) ;
    $Name = stripslashes($Name) ;
    $Addr =  stripslashes($Addr) ;
    $PO =   stripslashes($PO) ;
    $Numb = "'" . mysql_real_escape_string($Numb) . "'";
    $VAT = "'" . mysql_real_escape_string($VAT) .  "'";
    $Name =  "'" . mysql_real_escape_string($Name) .  "'";
    $Addr = "'" . mysql_real_escape_string($Addr) . "'";
    $PO = "'" . mysql_real_escape_string($PO) . "'";

    $sql=("UPDATE $tb1_name SET Employer_Registration_Number ='".$Numb."', Employer_VAT_number = '".$VAT."', Employer_Name = '".$Name."', Employer_Address = '".$Addr."', Employer_Postal_Address = '".$PO."' WHERE Employer_Name = '".$Name."' ");

    if (!mysqli_query($con,$sql))
      {
      die('Error: ' . mysqli_error($con));
      }
    echo "Successfully Updated";

    mysqli_close($con);
    ?>
    </body>

This here:

$Numb = "'" . mysql_real_escape_string($Numb) . "'";

Firstly, that isn't proper syntax and you're using mysqli_ to connect with, least I sure hope you are.

  • Those different MySQL APIs do not intermix with each other.

That should read as:

$Numb = mysqli_real_escape_string($con,$Numb);

while doing the same for the rest of your variables, following the same method outlined here.


Footnotes:

Seeing you didn't post what $tb1_name is, doubt that would be causing an issue. But just for the sake of argument, wrap that variable in ticks, just so if your table name changes to something containing a hyphen or a space, or anything that MySQL will complain about.

UPDATE `$tb1_name` SET...

Plus, since you didn't mention which MySQL API you're using to connect with, make sure it is in fact mysqli_ and not mysql_ or PDO.

It doesn't look like it, but I have to be 100% sure.

Your connection should resemble something like this:

$con = mysqli_connect("yourhost","user","pass","your_DB") 
or die("Error " . mysqli_error($con)); 

Again, those different MySQL APIs do not intermix with each other.


"I am very new at MYSQL..."

Seeing you're new to this:


Additional notes. (as an edit)

I noticed another question you posted earlier:

where you said "Thank you it worked " in the answer given https://stackoverflow.com/a/30191647/

I don't get that.

How could that possibly work where you're using if (!mysqli_query($con,$sql))?

  • You'll need to show us the way you're connecting with here.

If you truly want to see if your query was successful, use mysqli_affected_rows().

if(mysqli_affected_rows($con)){
   echo "Successfully updated.";
   }

else{
   echo "Not updated.";
}

Add error reporting to the top of your file(s) which will help find errors.

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

Sidenote: Error reporting should only be done in staging, and never production.