この質問をする前に、私は多くの場所(ここを含む)で回答を探しましたが、私は尋ねるには必死です。MySQL/PHP UPDATEクエリが機能しない
个人设定
<?php
if($_SERVER['REQUEST_METHOD'] == "POST")
{
include("lib/functions.php");
mysql_connect("localhost","root","") or die(mysql_error()); //Connect to server
mysql_select_db("proyectoinmob") or die("Cannot connect to the selected database"); //Connect to database
$nombreCalle = mysql_escape_string($_POST["nombreCalle"]);
$numeroCasa = mysql_escape_string($_POST["numeroCasa"]);
$precio = mysql_escape_string($_POST["precio"]);
$sql = "UPDATE propiedades SET nombreCalle='$nombreCalle', numeroCasa='$numeroCasa', precio='$precio' WHERE id='$id'";
executesql($sql);
header("location: index.php");
}
?>
<html>
<head>
<title>Proyecto Inmobiliaria - Editar</title>
</head>
<body>
<h2>Editar Propiedad</h2>
<?php
if(!empty($_GET["id"]))
{
$id = $_GET["id"];
$_SESSION["id"] = $id;
include("lib/functions.php");
mysql_connect("localhost","root","") or die(mysql_error()); //Connect to server
mysql_select_db("proyectoinmob") or die("Cannot connect to the selected database"); //connect to database
$sql = "SELECT * FROM propiedades WHERE id='$id'";
$output = executesql($sql);
$row = mysql_fetch_array($output);
Print "<form class='' action='' method='POST'>";
Print "<div class=''>";
Print "<label>Nombre Calle</label>";
Print "<input type='text' name='nombreCalle' value='".$row["nombreCalle"]."' placeholder='ej: Antonio del Viso'>";
Print "</div>";
Print "<div class=''>";
Print "<label for=''>Número de Casa</label>";
Print "<input type='text' name='numeroCasa' value='".$row["numeroCasa"]."' placeholder='ej: 440'>";
Print "</div>";
Print "<div class=''>";
Print "<label for=''>Precio</label>";
Print "<input type='text' name='precio' value='".$row["precio"]."' placeholder='ej: 150000'>";
Print "</div>";
Print "<button type='submit' name='add'>Guardar</button>";
Print "<a href='index.php' style='display:inline-block;border:2px solid #000;border-radius:25%;padding:10px;margin:10px;'>Regresar</a>";
Print "</form>";
}
?>
<br/>
</body>
</html>
のlib /のfunctions.php
<?php
function executesql($sql) {
$test = substr($sql,0,6);
if($test == "INSERT" || $test == "insert" || $test == "Insert") {
return mysql_query($sql);
} elseif ($test == "UPDATE" || $test == "update" || $test == "Update") {
return mysql_query($sql);
} elseif ($test == "SELECT" || $test == "select" || $test == "Select") {
return mysql_query($sql);
} elseif ($test == "DELETE" || $test == "delete" || $test == "Delete") {
return mysql_query($sql);
} else {
$var = "echo '<script>alert('This is not a valid query')</script>'";
}
return $var;
}
?>
追加するための他のファイルと一緒にこの事(、削除:
私には、以下の持っていますデータを挿入する)はこのの設定では正常に動作しています:
- Apache Webサーバーバージョン2.2.4
- PHPスクリプト言語のバージョン5.2.3
- MySQLデータベースのバージョン5.0.45
- phpMyAdminのデータベースマネージャバージョン2.10.2
今、私は次のものにアップグレードする理由がないと決めました:
- Apache Webサーバーバージョン2.4.25
- PHPスクリプト言語のバージョン5.6.30 & 7.1.1
- MySQLデータベースのバージョン5.7.17
- phpMyAdminのデータベースマネージャバージョン4.6.6
とブーム! 、UPDATEクエリのみが全く機能していません(他のスクリプト/クエリは完全に正常に動作しています)。
私は何かエラーや警告を見てみましたが、ヘッダ・ステートメントとindex.phpへのリダイレクトがヒットしましたが、UPDATEクエリは実行されませんでした。
私は何かがあった場合のために、5.2.3から5.3.10までのPHPバージョンログの変更を見直しますが、運はありません。
その後、私は上から同じ結果で次の設定を試してみてください。
- Apache Webサーバーバージョン2.2.22
- PHPスクリプト言語のバージョン5.3.10
- MySQLデータベースのバージョン5.5.54
- phpMyAdminのデータベースマネージャバージョン3.4.10
そして、この:
- Apache Webサーバーバージョン2.4.25
- PHPスクリプト言語のバージョン5.6.30
- MariaDB 10.1.21
- phpMyAdminのデータベースマネージャバージョン4.6.5。2
私はApache、PMA、PHPはこの問題とは関係がないと思うので、これまでの私の勝者はMySQLです。しかし...
- 本当の問題は何でしょうか?
- 質問に何か不足していますか?
- 私は私のコードで別の何かを試すことができますか?
- それは本当に私のクエリ構文を好きではないのMySQLで何ですか?
ヘルプ、ライト、ガイド、視力など、ここで役立つものは何でも。いつものように
どうもありがとう!
なぜ、 'executeql()'関数を最初に持っているのですか?それは実際に何もしない抽象化の層を追加しています。単一の一貫したMySQL APIを使用してSQLコマンドを実行してください。 – David
@Davidなぜあなたは重複としてマークしますか?クエリをそのまま実行しても、どちらも機能しません。そして、「一貫したMySQL APIを使用する」とはどういう意味ですか?私はこれが古いプロジェクトであることを明確にしています。私の設定をアップグレードする途中で、これが私の懸念事項であることが判明しました。「なぜMySQLバージョンを変更するのがなぜか分かりません」 – markite
これは複製であり、MySQL APIを混在させるためです。 'INSERT'、' SELECT'、および 'DELETE'クエリは' mysql_query() 'を使用するため動作します。 'UPDATE'クエリはmysqli_query()を使用していて(2つのパラメータが必要なので間違って使います)、動作しません。コードには他の*問題もあるかもしれませんが、UPDATEクエリが "うまくいかない"主な理由のようです。異なるバージョンの依存関係をインストールする作業は間違っています.MySQL APIの混在はどのバージョンでも機能しません。 – David