2012-07-15 145 views
0

我從一開始就一直在構建我的網站,直到今天沒有框架或所見即所得的軟件。我現在意識到,我做這件事的方式可能會更簡單。URL重寫和url參數

我是一個在PHP和MySQL noob,並希望瞭解它是如何工作的。這就是爲什麼我決定製作一個關於特定主題的網站。這是學習這些2種語言的最佳實踐...

所以,

我的網站去了解視頻內容每日更新。

我使用每個視頻製作一個獨特的網頁......現在我有超過300頁的視頻內容,我想將所有這些內容放到我的數據庫中,並將它們放在一個模板網頁中。

當我想要應用更改時,我必須打開所有這些網頁並在每個頁面上進行所需的更改。幸運的是,搜索替換框可以幫助我。

我只是想在網站上做一些事情,可以讓我的日常工作和工作更快更輕鬆。

我想用mysql請求做一些URL重寫。

我正在處理一段代碼,但是我找不到哪裏出了問題。 Dreamweaver告訴我synthax沒有錯誤,但是當我預覽它(WAMP)時,它會一直顯示我一個錯誤,直到擺脫「p」參數。以下,我將加入您使用的代碼。

<?php 
include "connect.php"; 
$id = $_GET["id"]; 
$sql = "SELECT * FROM videos WHERE id=$id LIMIT 1"; //mysql tells me there's a error near LIMIT 1 
$req = mysql_query($sql) or die(mysql_error()." ERROR"); 
$data = mysql_fetch_assoc($req); 

if($data["url"]!=$_GET["url"]) 
{ 
    header("location:/video/atest.php/".$data["id"]."-".$data["url"]); //if the URL is altered, it will be immediatelly fixed thanks to this function 
} 
?> 

你有一個錯誤的SQL語法;檢查 對應於你的MySQL服務器版本正確的語法使用 接近「LIMIT 1」在行1錯誤

感謝,我將能夠在我的數據庫每一塊的內容插入用於手動每個獨特的視頻>標題,說明......無需進行數千項更改並上傳新的網頁。

URL參數也在我的數據庫上,php腳本調用數據庫來檢索URL並使其看起來像一個獨特的網頁。

哦,我的英語對不起......

非常感謝。

+0

該死的,我忘了說你你好我的第一篇文章。 – 2012-07-15 16:39:48

+1

SQL和Header注入。 – 2012-07-15 16:44:26

+0

您不應該直接在SQL查詢中使用請求參數。總是使用'mysql_real_escape_string'(http://php.net/manual/en/function.mysql-real-escape-string.php)轉義參數來防止SQL注入。舊的'mysql'擴展名被棄用,使用'mysqli'。最好還是使用PDO(http://www.php.net/manual/en/mysqli.overview.php) – 2012-07-15 16:45:44

回答

1

嘗試

$id = mysql_real_escape_string($_GET["id"]); 
$sql = "SELECT * FROM videos WHERE id=$id LIMIT 1"; 
+0

嗨, 謝謝你的回答。 問題依然存在。 注意:未定義的索引:第4行的C:\ wamp \ www \ video \ atest.php中的id 其他建議? – 2012-07-16 13:59:30

+0

你之前得到的是一個MySQL錯誤。您在上面的評論中發佈的內容僅僅是一個PHP通知。你可以通過在使用它之前檢查索引是否存在來避免它。$ id = mysql_real_escape_string(isset($ _ GET ['id'])?$ _GET [「id」]:'');'。我不確定你在這裏做什麼。你引用一個參數'p'來修正你遇到的問題,但是在代碼中沒有看到任何參數/變量'p'。 – 2012-07-16 16:23:55

+0

嘿喬伊斯, 對不起,這是一個錯誤,我想說「身份證」... – 2012-07-16 19:57:48

0

嘗試呼應$ _GET [ 「身份證」];在sql之前,檢查你是否有任何價值。並且學習「PDO」比使用直接的sql語句更好,或者如Joyce所說的使用escape_string。

+0

嗨, 謝謝你的回答。如果我想正確使用PDO,我想我必須對最初的代碼進行一些更改。 – 2012-07-16 14:32:00

0

更改您的行: $ sql =「選擇*從視頻WHERE id = $ id LIMIT 1」;

對此: $ sql =「選擇*從視頻WHERE id ='」。$ id。「'LIMIT 1」;

您的SELECT選擇字符串'$ id'而不是php變量$ id。