繁体   English   中英

通过mySQL数据库中的记录通过PHP文件写入PHP文件

[英]Write PHP files through a PHP file from records in a mySQL database

以前使用MS Access的解决方案没有成功,所以这次我尝试使用php。

我有这个php文件,可以打开数据库,读取记录列表,并为每个记录创建一个html文件,分别位于它们各自的文件夹名称中(也可以在记录的字段中找到文件夹名称)

该代码似乎可以正常工作,但没有超越第一条记录。 我根本没有收到任何类型的错误消息,所以我对问题所在感到困惑。 我从此处找到的许多帖子中创建了代码。 我唯一想知道的是,打开和写入函数(或任何被调用的函数)在脚本中的顺序是否正确。 也许原因是完全不同的。

基本上,我要为脚本创建用于每个域在其各自文件夹中的“配置” php文件。 所有配置文件之间的唯一区别是domainid字段。

数据库中的表称为域。 字段是domainid,这是一个唯一的数字; 域,其中包含域名-例如domain.com-并用作域文件夹; 和domaingroup,用作“类别”文件夹。

为了安全起见,我更改了所有值,但数据库连接正常。

<?php
$db_name = "dbname"; 
$dbusername = "dbname"; 
$dbpassword = "password"; 
$server = "dbname.blahblahbla.hosted.com";

$connection = mysql_connect($server, $dbusername, $dbpassword) or die(mysql_error());
$db = mysql_select_db($db_name,$connection)or die(mysql_error());

    $htmlquery = "select * from domains ORDER BY domain";
    $htmlresult = mysql_query($htmlquery,$connection) or die(mysql_error());
    $htmlinfo = mysql_fetch_array($htmlresult);

    if ($htmlresult == 0) { 
        echo "<p>No Recourds Found</p>";
    } else {

    for ($i=0; $i <$htmlresult; $i++) { 

$p = "<?php \n"; 
$p.= " //LS \n";
$p.= " define('Disable_Ads', 'No'); //Yes or No \n";
$p.= " define('Site_ID', ".$htmlinfo['domainid']."); \n";
$p.= " define('Short_Paragraph_Size',500);\n";
$p.= " define('Long_Paragraph_Size',1000);\n";
$p.= " ?> \n";

    $htmlfolder = strtolower($htmlinfo['domaingroup']);
    $htmldomain = strtolower($htmlinfo['domain']);  
    $a = fopen($htmlfolder."/".$htmldomain."/admin_config.php", 'w');
    fwrite($a, $p);
    echo $htmldomain." Completed <br />"; // TEMP - To try to see the looping of domain names
    fclose($a);
    }
}
?>

谢谢

用while循环替换for循环

while($htmlinfo = mysql_fetch_assoc($htmlresult) {
   $p = "<?php \n"; 
   $p.= " //LS \n";
   $p.= " define('Disable_Ads', 'No'); //Yes or No \n";
   //.....
   $htmlfolder = strtolower($htmlinfo['domaingroup']);
   $htmldomain = strtolower($htmlinfo['domain']);  
   //...
}

现在,您只获取一行(您还应该调用mysql_fetch_assoc而不是mysql_fetch_array),因此您将x写入同一文件x次

另外,由于不推荐使用mysql_ *扩展名,请至少升级到mysqli或最好是PDO

您需要遍历所有行。

查询数据库后,您可以执行以下操作:

while($row = mysql_fetch_assoc($query)) {
  $domain = $row['domain'];
  $domaingroup = $row['domaingroup'];
  // etc...
}

但是,我们不建议使用mysql_*函数。 相反,至少要使用MySQLi或PDO。

根据Kris和Rob的回答,这是那些可能正在尝试做类似事情的人的正确工作代码(因为我不熟悉php和mysql,这只是一个临时解决方案,其他人可能会研究一下Kris而Rob则建议使用“ mysqli”和“ PDO”)。 这对我来说非常完美。 感谢大伙们!

@Kris很荣幸,因为他回复了与我的帖子有关的代码示例。 他专门使用了我代码中的变量,从而使理解和故障排除变得更加容易。 因此,我想指出他的答案。 (尽管我很感谢您的输入)

<?php
$db_name = "dbname"; 
$dbusername = "dbname"; 
$dbpassword = "password"; 
$server = "dbname.blahblahbla.hosted.com";

$connection = mysql_connect($server, $dbusername, $dbpassword) or die(mysql_error());
$db = mysql_select_db($db_name,$connection)or die(mysql_error());

    $htmlquery = "select * from domains ORDER BY domain";
    $htmlresult = mysql_query($htmlquery,$connection) or die(mysql_error());
    $htmlinfo = mysql_fetch_array($htmlresult);

    if ($htmlresult == 0) { 
        echo "<p>No Recourds Found</p>";
    } else {

    while($htmlinfo = mysql_fetch_assoc($htmlresult) {

$p = "<?php \n"; 
$p.= " //LS \n";
$p.= " define('Disable_Ads', 'No'); //Yes or No \n";
$p.= " define('Site_ID', ".$htmlinfo['domainid']."); \n";
$p.= " define('Short_Paragraph_Size',500);\n";
$p.= " define('Long_Paragraph_Size',1000);\n";
$p.= " ?> \n";

    $htmlfolder = strtolower($htmlinfo['domaingroup']);
    $htmldomain = strtolower($htmlinfo['domain']);  
    $a = fopen($htmlfolder."/".$htmldomain."/admin_config.php", 'w');
    fwrite($a, $p);
    echo $htmldomain." Completed <br />"; // TEMP - To try to see the looping of domain names
    fclose($a);
    }
}
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM