Avatar billede zombien Juniormester
13. august 2014 - 15:46 Der er 5 kommentarer og
1 løsning

Problemer med at indsætte data i MySQL

Hej Eksperter

Jeg sidder og ved simpelthen ikke hvor fejlen ligger i denne her MySQL string...

mysql_query("INSERT into MinTabel (from, parent, from_name, posted_on, subject, body) VALUES(47,0,'Support','2014-08-13 14:20:00','".$strTitle."','".$strMsg."')");

felter i min database er følgende

from = int - no default
parent = int - no default
from_name = varchar(45) - no default
posted_on = datetime - NULL ALLOWED
subject = tinytext - no default
body = text - no default

jeg får følgende fejlbesked
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 'from, parent, from_name, posted_on, subject, body) VALUES(47,0,'Support','2014'

håber virkelig nogle herinde der kan fortælle mig, hvorfor netop denne string fejler? for jeg må have kigget mig blindt på den for kan simpelthen ikke selv se den :S
Avatar billede keysersoze Guru
13. august 2014 - 15:58 #1
from er et reserveret ord i SQL og du bør derfor undgå at benytte det - hvis du vil benytte from samt tabel- eller kolonne-navn så sørg for at escape det.
Avatar billede zombien Juniormester
13. august 2014 - 16:04 #2
Denne tabel er oprettet af et community plugin via et plugin til Joomla, så den er desværre nødsaget til at hedde from da den gør det originalt...

men hvordan kan jeg komme til at ligge indhold ind i den kolonne?
Avatar billede keysersoze Guru
13. august 2014 - 16:15 #3
Så må du næsten kunne lure dig frem til det ud fra den medfølgende kode - men ellers tag et kig på dette svar; http://stackoverflow.com/questions/2889871/how-do-i-escape-reserved-words-used-as-column-names-mysql-create-table
Avatar billede zombien Juniormester
13. august 2014 - 16:27 #4
Det er jo sådan noget fint vidunderlig objekt orienteret programmering

/**
* Add receipient
*/       
public function addReceipient($msgObj, $recepientId){
$db =& $this->getDBO();
$my    =& JFactory::getUser();
           
$recepient = new stdClass();
$recepient->msg_id = $msgObj->id;
$recepient->msg_parent = $msgObj->parent;
$recepient->msg_from = $msgObj->from;
$recepient->to    = $recepientId;
       
if( $my->id != $recepientId )       
$db->insertObject('#__community_msg_recepient', $recepient);
if($db->getErrorNum()) {
JError::raiseError( 500, $db->stderr());
}
return $this;
}

og der må jeg alligevel indrømme det går over mit hoved at sætte mig ind i det :) men du kender ikke lige hvordan man skal håndtere sådanne tabeller med et reserveret ord som navn?

for det må jo kunne lade sig køre på en eller anden måde, har kigget lidt på alias men det kan jeg ikke helt blive klog på om det kun er select?
Avatar billede keysersoze Guru
13. august 2014 - 16:33 #5
Jeg kender ikke til PHP - men svaret findes så vidt jeg kan se i mit link i #3.
Avatar billede erikjacobsen Ekspert
13. august 2014 - 19:36 #6
Du kan

mysql_query("INSERT into MinTabel (`from`, parent, from_name, posted_on, subject, body) VALUES(47,0,'Support','2014-08-13 14:20:00','".$strTitle."','".$strMsg."')");
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester