php
  • mysqli
  • joomla3.0
  • 2016-03-14 58 views 0 likes 
    0

    我希望對於知道的人來說這將是一個相對簡單的問題。我嘗試了儘可能多的選擇,但我一定會錯過一些東西。我試圖創建一個使用它看起來像這樣的文件路徑在PHP中插入語句:使用變量準備MYSQLi語句時的語法問題

    $filename = "images/stories/virtuemart/product/product05.jpg"; 
    

    我的INSERT語句是這樣的:

    $insert = 'INSERT INTO `jos_virtuemart_medias`(`virtuemart_vendor_id`, `file_title`, `file_description`, `file_mimetype`, `file_type`, `file_url`,`published`) VALUES (1,'basename($filename)','substr(basename($filename), 0, strrpos(basename($filename), '.'))', images/jpeg, Product, '$filename', 1)'; 
    

    但它給我一個服務器錯誤。我檢查了日誌並沒有顯示任何內容,我還在代碼開始處設置了顯示錯誤。我似乎無法得到正確的語法。

    +3

    你不能停止一個字符串並運行一個PHP函數或使用一個變量,你必須用''''''' – WheatBeak

    +0

    實際上你所面臨的問題連接在一起的項目?你的插入查詢不起作用? –

    +0

    @WheatBeak你能舉個例子嗎?這讓我感到困惑。我的大部分經驗都是使用VBA,因此技術是不同的。 – Dtorr1981

    回答

    1

    在PHP中,你必須加入字符串只是一個.,所以您的代碼將變成:

    $insert = 'INSERT INTO `jos_virtuemart_medias`(`virtuemart_vendor_id`, `file_title`, `file_description`, `file_mimetype`, `file_type`, `file_url`,`published`) VALUES (1,' . basename($filename) . ',' . substr(basename($filename), 0, strrpos(basename($filename), '.')) . ', images/jpeg, Product, ' . $filename . ', 1)'; 
    

    請注意,你這樣做的方式會讓你很容易受到攻擊SQL injection;您應該使用PDO來代替編寫聲明,以減少攻擊的可能性。

    +1

    謝謝,我剛開始想讓語法正確。我正在使用joomla API,因此現在將嘗試將其轉換爲該格式。謝謝你的解釋。 :) – Dtorr1981

    相關問題