[英]Updating a database in PHP
我已經使用多種編程語言進行編程多年。 我也對標記和腳本語言有一些經驗。 我是PHP新手。 我正在嘗試為他修復我父親的網站,而且我學到了很多東西。 我已經修復了大部分問題,但目前仍無法解決。 我父親使用的PHP主機從5.1升級到5.4的升級破壞了該網站。 我注意到其中一項更改是現在需要定義變量。 數據庫正在更新,不再鏈接到圖片。 這是PHP:
if ($act=="update"){
$id = $_POST['id'];
$email = $_POST['email'];
$aim = $_POST['aim'];
$icq = $_POST['icq'];
$yahoo = $_POST['yahoo'];
$homepage = $_POST['homepage'];
$myip = $_POST['myip'];
if (!$myip)
$myip = $ip;
$email2 = $_POST['email2'];
$password = $_POST['password'];
$title = $_POST['title'];
$download = $_POST['download'];
$approved = $_POST['approved'];
$allowdelete = $_POST['allowdelete'];
$author = $_POST['author'];
$facebook = $_POST['facebook'];
if (isset($_POST['piclink']))
$piclink = $_POST['piclink'];
$domain = $_POST['domain'];
$option3 = $_POST['option3'];
$secret = $_POST['secret'];
if (isset($piclink)){
$picfile = "";
$download = "0";
$domain = parse_url_domain($piclink);
}
$myip = $_REQUEST['ip'];
if (!$myip)
$myip = $ip;
$email=addslashes($email);
$aim=addslashes($aim);
$icq=addslashes($icq);
$yahoo=addslashes($yahoo);
$homepage=addslashes($homepage);
$picfile=addslashes($picfile);
if (isset($dt))
$dt=addslashes($dt);
$myip=addslashes($myip);
$email2=addslashes($email2);
$password=addslashes($password);
$title=addslashes($title);
$download=addslashes($download);
$approved=addslashes($approved);
$allowdelete=addslashes($allowdelete);
$author=addslashes($author);
$facebook=addslashes($facebook);
$piclink=addslashes($piclink);
$domain=addslashes($domain);
$option3=addslashes($option3);
$secret=addslashes($secret);
//die("IP =".$myip);
$q="update $table set email='$email',aim='$aim',icq='$icq',yahoo='$yahoo',homepage='$homepage',picfile='$picfile' ,ip='$myip',email2='$email2',password='$password',title='$title',download='$download',appro ved='$approved',allowdelete='$allowdelete',author='$author',facebook='$facebook',piclink='$ piclink',domain='$domain',option3='$option3',secret='$secret' where id='$id'";
$result=mysql_query($q);
//dt='$dt' was removed from update as it blanked out date
}
if ($piclink) {
$url1 = $piclink;
} else {
$url1 = "http://plankingaround.com/pics/";
$url1 .= $picfile;
}
除數據庫中的piclink和/或picfile列外,其他所有內容都會更新。
任何幫助將不勝感激!
這不是您要的問題,但是您正在工作的站點存在嚴重的安全問題-SQL注入。
http://shiflett.org/blog/2006/jan/addslashes-versus-mysql-real-escape-string
該更新SQL的以下部分將失敗:
appro ved='$approved',
您可以在mysql_query($ q);之后立即使用mysql_error()回顯錯誤。
使用mysql被認為是極其糟糕的做法。 您應該升級mysql-> mysqli ...這將幫助您防止SQL注入,並解決一些問題。 由於mysql將很快被較新的PHP更新所淘汰。
這是如何執行此操作的示例:
$query = "UPDATE $table
SET
email=?,
aim=?,
icq=?,
yahoo=?,
homepage=?,
picfile=?,
ip=?,
email2=?,
password=?,
title=?,
download=?,
approved=?,
allowdelete=?,
author=?,
facebook=?,
piclink=?,
domain=?,
option3=?,
secret=?
WHERE id=?";
if($stmt = $mysqli->prepare($query)){
$stmt->bind_param('sssssssssssssssssssi', $email, $aim, $icq, $yahoo, $homepage, $picfile, $myip, $email2, $password, $title, $download, $approved, $allowdelete, $author, $facebook, $pic link, $domain, $option3, $secret, $id);
$stmt->execute();
}else die("Failed to prepare stmt");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.