使用变量准备MYSQLi语句时出现语法问题

时间:2016-03-14 13:30:21

标签: php mysqli joomla3.0

我希望这对于知情人士来说相对简单。我已经尝试了尽可能多的选择,但我必须错过一些东西。我试图使用文件路径在PHP中创建一个插入语句,如下所示:

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

我的插入语句如下所示:

$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)';

但它给我一个服务器错误。我检查了日志,没有显示任何内容,我也在代码的开头设置了显示错误。我似乎无法使语法正确。

1 个答案:

答案 0 :(得分: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来准备一个声明,这样可以减少攻击的可能性。