0

問題は次のとおりです。ファイル名がデータベースに保存されていません。ファイルはサーバーに正常にアップロードされていますが、ファイル名はまったく保存されません。ファイルが正常にアップロードされたらファイル名をエコーできますが、何らかの理由でファイル名をデータベースに保存する必要があります。これは簡単な修正であり、何かが足りないだけだと確信しています(私は願っています)。

前もって感謝します。

(psはい、私はmysqliを使用する必要があることを知っています)

HTML:

<form action="" name="loa" method="post" enctype="multipart/form-data">
    <input type="hidden" name="size" value="350000">
    <input type="file" name="loa"> 
    <input type="submit" name="loasub" value="Upload Letter of     Authorization">
</form>

PHP:

<?php
    if (!empty($_POST['loasub'])) {
        $target = "loa/";
        $target = $target . basename( $_FILES['loa']['name']);
        $theloa = ($_FILES['loa']['name']);
        mysql_connect("localhost", "user", "pass") or die(mysql_error()) ;
        mysql_select_db("mydb") or die(mysql_error()) ;

        //Writes the information to the database
        mysql_query("UPDATE customers SET loa='$theloa' WHERE id='30'") ;
        if(move_uploaded_file($_FILES['loa']['tmp_name'], $target))
        {
            echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded";
            echo $theloa;
        }
        else {
            echo "Sorry, there was a problem uploading your file.";
        }
    }
?>
4

4 に答える 4

1

このようにquretyを実行してみてください-(id = '30'から一重引用符を削除してください)

mysql_query("UPDATE customers SET loa='$theloa' WHERE id=30") ;
于 2012-12-26T04:54:21.630 に答える
1
 mysql_query("UPDATE customers SET loa='$theloa' WHERE id='30'") ;

実行または死ぬ (mysql_error());

 mysql_query("UPDATE customers SET loa='$theloa' WHERE id='30'") or die(mysql_error()) ;

クエリにエラーがある可能性があります。構文エラーでなくても、フィールド名が間違っている可能性があります。それ以外は、変数 $theloa が設定されている限り問題ないようです。mysql_error はクエリが実行されているかどうかを教えてくれますか?

于 2012-12-26T05:23:01.543 に答える
1

考慮すべき点がいくつかあります。

  1. mysql_*関数は非推奨です。代わりにmysqliまたはを使用してください。PDO
  2. $theloa変数に一重引用符が含まれていると、クエリが壊れる可能性があります。準備済みステートメントを使用して、このようなエラーを防ぎ、SQL インジェクション (サイレン音と赤いライトの点滅) を防ぎます。

var_dump($_FILES['loa']['name'])より明確にするために、実行して質問に貼り付けることを検討してください。

次の変更されたバージョンのファイルを使用してみてください( PHP インストールで拡張機能を有効にするmysqli必要があります)。mysqli(理想的には)動作するはずです。

<?php
    if (!empty($_POST['loasub'])) {

        $theloa = ($_FILES['loa']['name']);
        $target = "loa/";
        $target = $target . basename($theloa);

        $mysqli = new mysqli("localhost", "user", "password", "mydb");
        if (mysqli_connect_errno()) {
            die(mysqli_connect_error());
        }


        //Writes the information to the database
        if ($preparedStatement = $mysqli->prepare("UPDATE customers SET loa=? WHERE id=30")) {
            $preparedStatement->bind_param("s", $theloa);
            $executionResult = $preparedStatement->execute();
            if (!$executionResult) {
                die("Query execution failed!");
            }
            //$preparedStatement->bind_result($sqlOutput); // bind mysql output to an output variable
            //$preparedStatement->fetch(); // fetch mysql output
            //var_dump($sqlOutput); // dump the sql output

            $preparedStatement->close();
        }
        $mysqli->close();

        if(move_uploaded_file($_FILES['loa']['tmp_name'], $target))
        {
            echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded";
            echo $theloa;
        }
        else {
            echo "Sorry, there was a problem uploading your file.";
        }
    }
?>
于 2012-12-26T05:28:28.927 に答える
0

PHP の値を引用符で囲むことはできません ($loa から単一引用符を削除してください)

これを試して :

mysql_query("UPDATE customers SET loa=$theloa WHERE id='30'") ;

デバッグ

$conn = mysql_connect($dbhost, $dbuser, $dbpass);

$sql = mysql_query("UPDATE customers SET loa=$theloa WHERE id='30'") ;

mysql_select_db('顧客');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
  die('データを更新できませんでした:' .mysql_error());
}
echo "データは正常に更新されました\n";
mysql_close($conn);
?>
于 2012-12-26T05:17:05.447 に答える