2016-04-13 28 views
-2

benim web uygulaması üzerinde bir formdan bilgi aktarmak çalıştığınızda MySQL sorgusu bu hata mesajı ile geliyor:Beklenmeyen T_CONSTANT_ENCAPSED_STRING

Ayrıştırma hatası: sözdizimi hatası, beklenmedik '"', 'CURRENT_TIMESTAMP', '" '(T_CONSTANT_ENCAPSED_STRING)

mysql_query("INSERT INTO 'db'.'frs_Payment'('payid', 'amount', 'paydatetime', 'empnin', 'custid', 'pstatusid', 'ptid') 
     VALUES('','".$amount"','CURRENT_TIMESTAMP','".$empnin."','".$custid"','"2"','".$ptid."');"); 

Bu hataya neden olan CURRENT_TIMESTAMP özelliğidir. Bunun konuşma işaretlerinden dolayı olabileceğinin farkındayım. Ancak bunları ekledim ve zaman damgasından kaldırdım ve sorgu hala çalışmayacak.

Başka yerde konuşma işaretleri eklemem gerekir mi?

+0

$ tutarının değeri nedir? Burada kaçış görmüyorum, bu yüzden o değişkende hileli tek bir teklife sahip olsaydınız, ne olursa olsun bozulurdu. Ayrıca, mysql_ işlevleri kullanımdan kaldırılmıştır. mysqli veya PDO içine bakmak ve hazırlanan deyimleri kullanın –

+0

Bu mysql ile ilgisi yok, bu bir php sözdizimi hatası – Shadow

+0

''current_timestamp'' alanına current_timestamp metnini eklemeye çalıştığınız anlamına gelir. Geçerli saati eklemek istiyorsanız, 'current_timestamp()' formunu kullanın. Ancak bu sorudaki hata mesajından bağımsızdır. – Shadow

cevap

1

PHP sözdiziminizde bir yazım hatası var. Değişim:

mysql_query("INSERT INTO 'db'.'frs_Payment'('payid', 'amount', 'paydatetime', 'empnin', 'custid', 'pstatusid', 'ptid') 
     VALUES('','".$amount"','CURRENT_TIMESTAMP','".$empnin."','".$custid"','"2"','".$ptid."');"); 

için:

mysql_query("INSERT INTO 'db'.'frs_Payment'('payid', 'amount', 'paydatetime', 'empnin', 'custid', 'pstatusid', 'ptid') 
     VALUES('','".$amount."','CURRENT_TIMESTAMP','".$empnin."','".$custid."','2','".$ptid."');"); 

Typos kendi kendini açıklayan vardır. Ayrıca, 'un PHP 5.5.0'da kullanımdan kaldırıldığını ve PHP 7.0.0'da kaldırıldığını unutmayın.

1
mysql_query("INSERT INTO 'db'.'frs_Payment'('payid', 'amount', 'paydatetime', 'empnin', 'custid', 'pstatusid', 'ptid') 
    VALUES('','$amount',CURRENT_TIMESTAMP(),'$empnin','$custid','2','$ptid');"); 

Çift tırnaklı bir dizeyi ayırmanıza gerek yok ve her yerde çok fazla tırnak var. Ayrıca, CURRENT_TIMESTAMP bir dize işlevi değil, bir dize işlevidir.