June 29, 2004
tja, behöver seriös hjälp. Jag har denna kod som inte är allt för lång eller avancerad men som inte fungerar. I IE får man ett HTTP 500 fel vilket betyder interntserverfel eller fel i koden. Alltså kikade jag runt lite på nätet och hittade någon php-acess grej som kunde berätta felet.
Felet var T_VARIABLE på Line 13. Koden är som följer:
<?php
$datum = date('y m d');
$ip = $_SERVER['REMOTE_ADDR'];
$con = mysql_connect('servername', 'serveruser', 'serverpass');
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db('ffut_se', $con);
$besok = mysql_query('SELECT besok FROM ip_table WHERE ip='$ip'');
$besok2 = mysql_fetch_array($besok);
if (mysql_num_rows($besok) > 0) {
$besok3 = $besok2['besok'] + 1;
mysql_query('UPDATE ip_table SET besok='$besok3' WHERE ip='$ip''); // I denna rad ligger tydligen felet!
mysql_query('UPDATE ip_table SET datum='$datum' WHERE ip='$ip'');
}
else {
mysql_query('INSERT INTO ip_table (ip, datum, besok) VALUES ('$ip', '$datum', '1')');
}
mysql_close($con);
?>
Koden ska logga ip nummer i en mysqldatabas (väldigtkortfattat eftersom jag tror inte det har någon betydelse)
Är det någon som på rak arm kan säga vad som bråkar med mig? :cy:
June 28, 2007
Om du ska syssla med tråkigt PHP-kodning så måste du veta vad det är :-).
Enkelfnuttar är ' och dubbelfnuttar är "
June 29, 2004
AHA! jasså du menar escapa mina enkelfnuttar. ok kung gjort detta, fungerar ändå inte:P nu ser koden ut så här, har jag gjort korrekt?:
<?php
$datum = date('y m d');
$ip = $_SERVER['REMOTE_ADDR'];
$con = mysql_connect('servername', 'serveruser', 'serverpass');
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db('ffut_se', $con);
$besok = mysql_query('SELECT besok FROM ip_table WHERE ip='$ip'');
$besok2 = mysql_fetch_array($besok);
if (mysql_num_rows($besok) > 0) {
$besok3 = $besok2['besok'] + 1;
mysql_query('UPDATE ip_table SET besok='$besok3' WHERE ip='$ip'');
mysql_query('UPDATE ip_table SET datum='$datum' WHERE ip='$ip'');
}
else {
mysql_query('INSERT INTO ip_table (ip, datum, besok) VALUES ('$ip', '$datum', '1')');
}
mysql_close($con);
?>
September 1, 2002
Jag tror det är MYSQL-queryn som knasar, antagligen för att SQL-frågan inte blir som du kanske tänkt.
Direkt under rad 13
$besok = mysql_query('SELECT besok FROM ip_table WHERE ip='$ip'');
lägg till följande satser
if (!$besok) {
$message = 'Invalid query: ' . mysql_error() . "n";
$message .= 'Whole query: ' . $query;
die($message);
}
så att det blir
$besok = mysql_query('SELECT besok FROM ip_table WHERE ip='$ip'');
if (!$besok) {
$message = 'Invalid query: ' . mysql_error() . "n";
$message .= 'Whole query: ' . $query;
die($message);
}
Jag misstänker att du inte bygger SQL-frågan klokt, men jag är lite ringrostig på PHP.
Hade jag byggt samma fråga hade jag använt mig av sprintf. Resultatet blir det samma jag tycker det blir lite enklare att ha koll på alla fnuttar.
$query = sprintf("SELECT besok FROM ip_table WHERE ip=%s", $ip);
Det kan också vara bra att se till att variabeln $ip verkligen innehåller en sträng motsvarande en giltig IP-address och inget annat, innan du bakar in variabelns innehåll till SQL-frågan.
June 29, 2004
Jag är jätte tacksam för all hjälp men det fungerar ändå inte. Jag provade allt det ni tipsat om men utan framgång. Jag pratade med loopia (där servern är) och det var dom som sa att det T_VARIABEL fel på rad 13.
Det konstiga är att jag skapade innan de en fil med bara raderna:
<?php
$con = mysql_connect('servername', 'serveruser', 'serverpass');
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
?>
och då fick jag samma interna serverfel, nr 500.
Men nu känns det som jag ger upp, gör ett sista försök att demolera hela scriptet och sen göra om det från början, lite synd dock...
1 Guest(s)