W Webslave Medlem sedan maj 2002 647 inlägg Frågan 16 nov. 2003 16:09 #1 Hej... en lite akut fråga:
På mitt hempulade forum så händer det ibland att en del inlägg inte kommer med... följande kod används för att lägga in den i MySQL:
<?PHP
session_start();
if(isset($_POST['submitpost'])){
require("../../variables.php");
require("../../get/checkUser.php");
if($userCheck=="notok"){
header("location: ../../?loc=error&reaason=notloggedin");
exit;
}
else{
$postText = htmlentities($_POST['postText']);
$np = htmlentities($_POST['nowPlaying']);
$date = date("Y-m-d H:i:s");
$sql = "INSERT INTO forumposts(postTopicID,postDate,postPosterID,postText,postNowPlaying) VALUES('".$_POST['topicID']."','$date','".$_SESSION['yID']."','$postText','$np')";
$result = mysql_query("$sql");
$sql = "UPDATE forumtopics SET topicPosts = topicPosts+1, topicLastPostDate = '$date', topicLastPosterID = '".$_SESSION['yID']."' WHERE topicID = '".$_POST['topicID']."'";
$result = mysql_query("$sql");
$sql = "UPDATE forumforums SET forumPosts = forumPosts+1 WHERE forumID = '".$_POST['forumID']."'";
$result = mysql_query("$sql");
$sql = "UPDATE users SET uPosts = uPosts+1 WHERE uID = '".$_SESSION['yID']."'";
$result = mysql_query("$sql");
mysql_close($connect);
header("location: ../../?loc=forum&forum=".$_POST['forumID']."&thread=".$_POST['topicID']);
exit;
}
}
?>
Allt läggs till utom den första som ibland inte kommer med... några idéer?
W Webslave Medlem sedan maj 2002 647 inlägg Märkte även att saker som jag kopierat och lagt in i min textarea absolut inte vill med... hilfe?! Kan det vara några inställningar som spökar? Har aldrig haft dessa problem förut men har nu bytt webhotell så...
K K@llen Medlem sedan mars 2003 2 667 inlägg $result = mysql_query("$sql");
bör på samtliga ställen vara:
mysql_query( $sql ) or die( mysql_error() );
Inga fnuttar runt $sql. Det skapas inget "returvärde" som du måste lägga i en variabel, samt att du får ett felmeddelande om något går snett, vilket underlättar att hitta ett fel.
W Webslave Medlem sedan maj 2002 647 inlägg har kört med:
$result = mysql_query("$sql");
... i 2 år och har aldrig märkt något konstigt med det... men jag testar och lägga till "or die()" så får vi se vad som händer och fötter
K K@llen Medlem sedan mars 2003 2 667 inlägg Förlåt att jag hittade knasigheter i din kod, ska aldrig mer upprepa min hjälpsamhet. :moose
W Webslave Medlem sedan maj 2002 647 inlägg Men ojoj... här påpekade jag bara att det inte varit nå knas med det tidigare och så får man tummen ner... sucka. :P
T The_Hulk Medlem sedan juni 2003 1 837 inlägg har ju ingen betydelse om du skriver
mysql_query("$sql");
eller
mysql_query($sql);
båda två motsvarar exakt samma sträng.
W Webslave Medlem sedan maj 2002 647 inlägg Okelidokeli... har nu lyckats fått fram ett felmeddelande:
You have an error in your SQL syntax near ''Oops... glömde bort det :\','')' at line 1
Raden den refererar till ser ut så här:
$sql = "INSERT INTO forumposts(postTopicID,postDate,postPosterID,postText,postNowPlaying) VALUES('".$_POST['topicID']."','$date','".$_SESSION['yID']."','$postText','$np')";
ibland kan "$np" vara tom för att användaren inte har fyllt i något... fältet är satt som varchar, not null i mysql.
Resten av koden ser ni högst upp.
Någon som ser något skumt?
W Webslave Medlem sedan maj 2002 647 inlägg Kom på mig själv... dum som jag är har jag inte addslashes på... (Sedan när folk skriver \ så händer sig queryn) får slänga in det och se vad som händer