1

我对 php 很陌生,真的不知道我做错了什么。

我的变量 $largeid 在结果中似乎为空:

$newfile=$_POST['largeName'].$largeid.".php";

即使在执行此代码之后:

while($largeidrow = mysql_fetch_array(largeidresult))
{
    $largeid = $largeidrow['large_id'];
}

这是整个代码:

<?php 
$con = mysql_connect("localhost","","");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("test", $con);

$sql="INSERT INTO larges(name,largecontent)VALUES('$_POST[largeName]','$_POST[content]')";

if (!mysql_query($sql,$con))
  {
    echo "failed";
  die('Error: ' . mysql_error());
  }
echo "1 record added";

$largeidresult = ("SELECT large_id FROM larges WHERE name='$_POST[largeName]'");

if (!mysql_query($largeidresult,$con))
{
    echo "failed";
    die('Error: ' . mysql_error());
}

while($largeidrow = mysql_fetch_array(largeidresult))
{
    $largeid = $largeidrow['large_id'];
}

if ($_POST['largeName']) {
error_reporting(0);
$i=1;
while($file = fopen("untitled$i.php", "r")) { fclose($file); $i++; }
if($file = fopen("untitled$i.php", "w")) {
$php = "<html> \n <head> \n </head> \n <body> \n test \n <?php \n echo 'hallo'; \n ?>     \n </body> \n <html>";
    $file_ext = strip_tags($_POST['$php']);
if(fwrite($file, $php) === false) { echo "Could not write"; exit; }
fclose($file);
$newfile=$_POST['largeName'].$largeid.".php";
system("mv untitled$i.php $newfile");
header("Location: $newfile");
}
}
else {
echo "<form method=post action='".$_SERVER["SCRIPT_NAME"]."'>\n";
echo "New File Name: <input name='filename'>\n</form>\n";
}
?>
4

2 回答 2

2

首先我会说不要使用 mysql 函数。使用mysqliPDO

来自 PHP 文档

警告 自 PHP 5.5.0 起不推荐使用此扩展,并将在未来删除。相反,应该使用 MySQLi 或 PDO_MySQL 扩展。另请参阅 MySQL:选择 API 指南和相关的常见问题解答以获取更多信息。此功能的替代方案包括..

在您的代码中,您调用的方式mysql_fetch_array(#link)是错误的。

$sql = ("SELECT large_id FROM larges WHERE name='$_POST[largeName]'");

$result = mysql_query($sql);
if($result)
 {
   while($row= mysql_fetch_array($result))
     {
      $largeid = $row['large_id'];
     }
 }
于 2013-06-28T09:48:48.443 回答
0

当您进行插入时,您正在使用此行:

$sql="INSERT INTO larges(name,largecontent)VALUES('$_POST[largeName]','$_POST[content]')";

用这个改变它:

$sql="INSERT INTO larges(name,largecontent)VALUES('".$_POST[largeName]."','".$_POST[content]."')";

您必须将 php 变量与静态文本分开。对您的 SELECT 也使用相同的方法。

于 2013-06-28T09:50:18.403 回答