如何在php中向MySQL查询添加文件内容

如何在php中向MySQL查询添加文件内容,php,mysql,database,Php,Mysql,Database,我正在使用以下php查询在我的CMS系统中安装表: $q=new mysql(" INSERT INTO `adm` (`id`, `login`, `adm`, `passwd`, `czas`, `logged`, `ip`, `email`) VALUES (0, 'admin', 1, PASSWORD('admin'), 0, 0, '0.0.0.0', 'admin@domain.com'); "); 但不是电子邮件admin@domain.com我想使用存储在/settings/

我正在使用以下php查询在我的CMS系统中安装表:

$q=new mysql("
INSERT INTO `adm` (`id`, `login`, `adm`, `passwd`, `czas`, `logged`, `ip`, `email`) VALUES
(0, 'admin', 1, PASSWORD('admin'), 0, 0, '0.0.0.0', 'admin@domain.com');
");
但不是电子邮件admin@domain.com我想使用存储在
/settings/contact.inc.php
文件中的电子邮件,该文件是:

    <?php    
$emailaddress='admin@domain.com';
    ?>

您可以像这样简单地使用它

$query = "INSERT INTO `adm` (`id`, `login`, `adm`, `passwd`, `czas`, `logged`, `ip`, `email`) 
          VALUES (0, 'admin', 1, PASSWORD('admin'), 0, 0, '0.0.0.0', '$emailaddress')";
注意:您需要包括
/settings/contact.inc.php
文件


请阅读:!相反,请了解,并使用or-将帮助您决定使用哪一个。

只需包含文件并使用变量:

require_once("/settings/contact.inc.php");

$q=new mysql("
INSERT INTO `adm` (`id`, `login`, `adm`, `passwd`, `czas`, `logged`, `ip`, `email`) VALUES
(0, 'admin', 1, PASSWORD('admin'), 0, 0, '0.0.0.0', '$emailaddress');
");
小心SQL注入

在这种情况下,您知道
$emailaddress
来自何处,并且可以信任该内容。在其他情况下,您需要保护代码免受攻击

因此,我建议您使用,使用函数

然后,可以用问号或命名占位符替换查询中的变量:

"INSERT INTO `adm` (`id`, `login`, `adm`, `passwd`, `czas`, `logged`, `ip`, `email`) VALUES (0, 'admin', 1, PASSWORD('admin'), 0, 0, '0.0.0.0', ?);"

然后使用函数绑定$emailaddress。

您可以包括/settings/contact.inc.php,然后可以使用$emailaddress变量。

您可以包括文件,然后可以使用如下所示的all变量

include('/settings/contact.inc.php');
$q=new mysql("INSERT INTO `adm` (`id`, `login`, `adm`, `passwd`, `czas`, `logged`, `ip`, `email`) VALUES (0, 'admin', 1, PASSWORD('admin'), 0, 0, '0.0.0.0', '$emailaddress');");
<?php include_once('/settings/contact.inc.php'); ?>

所有的答案都很好,所以我都投了赞成票。除此之外,每个人都建议您可以通过使用
fopen
fread
来完成。我知道那条路很简单,但我的路只是另一条路。

$filePath = './settings/contact.inc.php';

$handle  = fopen($filePath,"r+");
$content = fread($handle,filesize($filePath));
$array = explode(" ",$content);
foreach($array as $word)
{
    if(filter_var($word, FILTER_VALIDATE_EMAIL))
    {
        $emailaddress = $word;
    }
}
fclose($handle);

$q=new mysql("INSERT INTO `adm` (`id`, `login`, `adm`, `passwd`, `czas`, `logged`, `ip`, `email`) 
VALUES
(0, 'admin', 1, PASSWORD('admin'), 0, 0, '0.0.0.0', '$emailaddress');");

将文件存储在数据库中是个坏主意,将其存储在文件系统中,并在数据库中存储路径是的,这就是我想做的:)@zerkms,我认为他不想将文件保存在数据库中。似乎他只想从另一个php文件中读取变量。我看这篇文章没有什么错@Rikesh是对的,您需要在我的查询+1之前包含此文件并使用赋值变量。@RobertPodwika-谢谢。没有任何评论就被否决总是让人感觉很糟糕:请注意,我经常被否决,因为我的回答很好,没有任何评论,所以我理解你;)@Riksh我会投下否决票,但是既然你要问为什么有人会投票,那就考虑一下吧。问这个问题的人可能对PHP/MySQL了解不多(因为他或她对字符串有问题),但你要向他或她展示,在SQL查询的中间粘贴一个变量是很好的做法。几个月后,此人将复制粘贴同一段代码,并到处创建SQL注入(尽管它们最初只是来自静态文件,不应发生注入)。@H2Ooooo但此变量是由他设置的,而不是由用户设置的,因此攻击者无法修改它。当然,最好使用预先准备好的语句,但这里看起来并没有问题。如果您对这个答案是认真的,我希望使用正则表达式