我真的很困惑來自我的簡單插入的錯誤。我已經用不同的檢查器多次檢查了這個語法,並且搜索了類似的麻煩,但是還沒有找到解決方法。SQLSTATE [42000]:語法錯誤,但語法正常
的錯誤看起來是這樣的:
'SQLSTATE[42000]: Syntax error or access violation: 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 ' , , , , , , , , , , , , , ,)' at line 1' in
而且我的代碼基本上是這樣的:
$yhteys = new PDO('mysql:host=localhost;dbname=XXXX', 'YYYY', 'ZZZZ');
$kysely = $yhteys->prepare("INSERT INTO hakija (Kutsumanimi, Etunimet, Sukunimi, SyntymAika, Syntymapaikka, Sahkoposti, Puhelinnumero, Postiosoite, Postinumero, Postitoimipaikka, Maa, Suosittelija, IPos, Lahetysaika, Vapaa_sana, Sosme) VALUES ($nimi, $etunimet, $sukunimi, $saika, $spaikka, $email, $puhelin, $osoite, $postinro, $postitmp, $maa, $suosittelija, $IPos, $lahetysaika, $vapaasana, $sosme)");
$kysely->execute();
如果我直接使用INSERT通過phpMyAdmin的,它的工作原理,但是從PHP ..任何人都可以幫幫我?
PHP:原生(5.4) 的MySQL 5.6
你確定你的變量是不是空的?它看起來是這樣的,但我沒有重現它.. 也考慮到兩個答案:你必須封裝字符串與單個問題,總體而言,你應該使用預先準備好的語句(爲了安全和方便)。 –
不確定,某些變量可能爲空,因爲它們不是必需的。 – tlaxin
好的。按照RafH的建議使用準備好的語句。這種方式應該可以,如果他們是空的,再加上它是一個必須出於安全原因(http://stackoverflow.com/questions/732561/why-is-using-a-mysql-prepared-statement-more-secure-than -using-the-common-escape) –