2016-04-24 13 views
-3

私はコードが乱雑で非常に不完全であることを知っています。しかし、私が更新した以下のコードを使用してmysqlレコードを更新しようとしています。今では文句を言わないのMySQLデータベースに事前にあなたの助けをPHPを使用してmysqlレコードを更新しないでください

おかげ

<?php 
define('DB_NAME', 'comics'); 
    define('DB_USER', 'root'); 
    define('DB_PASSWORD', ''); 
    define('DB_HOST', 'localhost'); 

    $link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); 

    if (!link) { 
    die('Could not connect: ' . mysql_error()); 
    } 

    $db_selected = mysql_select_db(DB_NAME, $link); 

    if (!$db_selected) { 
    die('Can\'t use ' . DB_NAME . ': ' . mysql_error()); 
} 

if (!isset($_GET['update'])){ 
     $q = "SELECT * FROM comics where ID = '$_GET[id]'"; 
     $result = mysql_query($q); 
     $comics = mysql_fetch_array($result); 
    } 

if(isset($_GET['update'])) 
{ 


    $email = mysql_real_escape_string($_GET["email"]); 
    $title = mysql_real_escape_string($_GET["title"]); 
    $issue = mysql_real_escape_string($_GET["issue"]); 
    $edition = mysql_real_escape_string($_GET["edition"]); 
    $publisher = mysql_real_escape_string($_GET["publisher"]); 
    $condition = mysql_real_escape_string($_GET["condition"]); 
    $price = mysql_real_escape_string($_GET["price"]); 

    $targetid = intval($_GET["id"]); 

    $sql = "UPDATE comics SET Email='$email', Title='$title',  Issue='$issue', Edition='$edition', Publisher='$publisher',  Quality='$condition', Cost='$price' WHERE ID = '$targetid' "; 

$myData = mysql_query($sql,$link); 
if(!$myData) {die(mysql_error());} 

if ($myData == TRUE) { 
header('Location: index.html'); 
exit(); 
    } 
} 
+0

エラーメッセージが表示されます。WHERE ID = 'at line 1 – Spencer

+0

また、問題のスペルが間違っています。 – DaiBu

+0

スペルミスを修正しても、なぜ私はあなたのSQL構文にエラーがあるのか​​分かりません。あなたのMySQLサーバのバージョンに対応するマニュアルを調べて、正しい構文が 'WHERE ID =' id ''の行1のエラーの近くで使用するようにしてください。 – Spencer

答えて

3

を投稿あなただけでは、クエリの残りの部分が壊れます

Issue='$isuse, 

'を逃しています。そして、issueのスペルミスがあります。それは

Issue='$issue', 

あなたはまた、右のあなたのWHERE句の前に余分なコンマを持って、そしてあなたがあなたのクエリで$idを使用しますが、あなたは(私はあなたが$targetidを意味する必要がありますだと思う)という定義されませんする必要があります。全体のことはする必要があります:あなたは本当に自動的に、あなたのためにこれらの問題のすべてをキャッチしているだろうPHPStorm(なし所属)のようなIDEを使用する必要があります

$sql = "UPDATE comics SET Email='$email', Title='$title',  Issue='$issue', Edition='$edition', Publisher='$publisher', Quality='$condition',  Cost='$price' WHERE ID = $targetid "; 

つまり、don't use mysql_*としてください。 mysql_*の機能が古くなっており、deprecated、安全ではありません。これらはPHP 7で完全に削除されており、長い間廃止されています。代わりにMySQLiまたはPDOを使用してください。

また、あなたはSQL injectionに広く公開されています。これは重大なセキュリティ上の脆弱性です。あなたのコードはと決してを修正するまで生産に入れなければなりません。

+2

私たちがどのように話し手を含める必要がありますか?今日でもmysql_ *を使わないでください... – vee

+1

@veeええ、そのライブラリはちょうど死ぬことはありません。 –

+0

また、スペルのスペルも間違っています。あなたの答えを更新したいかもしれません。 – DaiBu

関連する問題