MySQL 1064 Hatası mı alıyorsunuz ama sorgu hala tamamlar?

1 Cevap php

Bazı başarısız, bir MySQL veritabanı alanları bir sürü eklemek çalışıyorum, bu yüzden deneyin ve neler olduğunu izlemek için benim PHP komut dosyası içine bazı kod ekleme.

Yerine ben mysql de doldurulan alanlar görebilirsiniz olarak çalışmak gibi görünüyor, ama ben bu hatayı alıyorum:

1064: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 '1' at line 1

//insert query
if (strlen($link_name)>0)
{
$query = mysql_query("REPLACE into jos_mt_links
(link_id, link_name, alias, link_desc, user_id, link_approved, metadesc, link_created, link_modified, website, price)
VALUES ('$link_id','$link_name','$link_name','$description','63','1','$metadesc','$link_created','$link_modified','$website','$cost')");
echo $link_name . "has been inserted <br />";
print "SQL-Query: ".$query."<br>";

    if(mysql_query($query,$db))
   {
    echo "<center><font face='$fonts' size=2 color='$green'>";
    echo " OK !</font><br><br>\n";
   }
  else
   {
    echo "<center><font face='$fonts' size=3 color='$red'>";
    echo "Error<br><br>";
       echo mysql_errno() . ":" . mysql_error() . "</font><br>\n";
   }

1 Cevap

Lütfen SQL ile yanlış bir şey yoktur. Sen $query sizin mysql_query() çağrının sonucu atıyorsanız:

$query = mysql_query("REPLACE into jos_mt_links
    (link_id, link_name, alias, link_desc, user_id, link_approved, metadesc,
    link_created, link_modified, website, price)
    VALUES
    ('$link_id','$link_name','$link_name','$description','63','1','$metadesc','$link_created','$link_modified','$website','$cost')");

Eğer sonuç atıyorsanız o mysql_query() döner true veya false REPLACE sorgulama sonucu olarak, ancak daha önemli bir şey değil, sen uyguluyorsun SQL sorgu.

Ayrıca, burada:

if(mysql_query($query,$db))

Sen diyorsun mysql_query() again Eğer sorgu çalıştığını söyledi çünkü artık (true değerini tutan aynı $query değişken üzerinde ve veritabanı) normalde güncellenmektedir. PHP string '1' olarak boolean true yorumluyor ve bu hatayı veriyor 1 adında bir sorgu çalıştırmak için MySQL söylüyorsun.

Muhtemelen durumu düzgün çalışıp çalışmadığını $query Bunun gibi yerine senin çok atamak anlamına geliyordu:

$query = "REPLACE into jos_mt_links
    (link_id, link_name, alias, link_desc, user_id, link_approved, metadesc,
    link_created, link_modified, website, price)
    VALUES
    ('$link_id','$link_name','$link_name','$description','63','1','$metadesc','$link_created','$link_modified','$website','$cost')";

Ve de eğer deyimi içinde echo çağırıyor.

Başka bir şey: Mark Baker kaydetti ne gibi, değişkenler bu gibi SQL doğrudan yapışmadan önce mysql_real_escape_string() ile kaçtı olmuştur emin olun.