0

私はここを掘り下げて数え切れないほどのチュートリアルを検索しましたが、すべて順調に進んでいるようです.私が作成しているページはすべて正常に動作しますが、mysqlコードをスキップしているようです.

まず、フォーム用のページ create.php を作成します。

<head>
<link rel="stylesheet" type="text/css" href="/css/index.css" />
<?php include ($_SERVER['DOCUMENT_ROOT'].'/menu/nav.php');
?>
</head>
<table class="cnrc">
<td>
<?php
$username= $_COOKIE['username'];
$con=mysqli_connect('localhost','root','password','perms')or die("cannot connect");
$sql = "SELECT * FROM permissions WHERE `name`='".$username."'";
$res = mysqli_query($con,$sql);
$row = mysqli_fetch_assoc($res);
$new_array = $row;
if ($res === false) {
    echo mysqli_error();
}else{
if(mysqli_num_rows($res) == 0){
echo 'It seems you do not have permission to create a town!';
}
elseif (in_array('town.mayor',$new_array,true)){
echo ' <form method="post" action="filecheck.php">
Please name your new town!: <input type="text" name="tname"><br>
<center><input type="submit" name="ctown" value="Create"></center></form> ';
}
}
?>
</td>
</table>

次に、ページ filecheck.php を作成するプロセス:

<?php
$tname = mysql_real_escape_string($_POST['tname']);
$user= mysql_real_escape_string($_COOKIE['username']);
$dir="towns/$tname/";
$path="towns/$tname/$user.php" ;
$path2="towns/$tname/index.php" ;
$path3="towns/$tname/config.ini" ;
$default= "default/user.php" ;
$default2= "default/index.php" ;
$default3= "default/config.ini" ;

if(isset($_POST['ctown'])){

  if(!file_exists($dir)){
        $con=mysqli_connect('localhost','root','password','towns');
        $sql= "INSERT INTO users (username, town, check) VALUES ('".$user."', '".$tname."', 'created')";
        mysqli_query ($con,$sql);
        mkdir ($dir);
  if (!file_exists($path)) {
        copy ($default, $path);
        }
  if (!file_exists($path2)) {
        copy ($default2, $path2);
        }
  if (!file_exists($path3)) {
        copy ($default3, $path3);
    }
    }
    header("Location: editor.php");
}else{
echo 'You have accessed this page incorrectly!';
}
4

3 に答える 3

0

リソースに接続した後にMySQL_*データベースを選択する必要がありましたが、選択しませんでした。そのMySQLi_余分なステップは必要ありません。なぜMySQL_*に固執するのではなく、使い始めたのですMySQLi_か???

于 2013-05-31T04:17:13.060 に答える
0

問題はあなたがmysql_*ここで使っていることですが、そうあるべきですmysqli_*

mysqli_connect4 つの引数をmysql_connect取り、3つの引数を取ります

$con=mysqli_connect('localhost','root','weed45654','towns')or die("cannot connect");
mysqli_query ($con,"INSERT INTO users
      (username, town, check)
      VALUES
      ('patey', 'test', 'created')");
于 2013-05-31T04:18:15.737 に答える
0

問題が何であるかはわかりませんが、この方法でうまくいきました:

if(isset($_POST['ctown'])){
  if(!file_exists($dir)){
        $con= new mysqli('localhost','root','password','towns');
        if ($con->errno) {
        printf("Connect failed: %s\n", $con->error);
        exit();
        }
        $sql = "INSERT INTO `towns`.`users` (`username`, `town`, `check`) VALUES ('".$user."', '".$tname."', 'created')";
        $stmt = $con->prepare($sql);
        $stmt->bind_param('s', $username_value);
        $username_value = $user;
        if ($result = $stmt->execute()){
        $stmt->free_result();
        }
        else {
        echo "error";
        }
        $con->close();
      mkdir ($dir);
}

しかし、それは機能しますが、これが最善の方法ですか? 注 - これは変更されたコードの唯一のセクションであり、filecheck.php

于 2013-06-01T02:23:34.033 に答える