$userId是否有值,有沒有報(bào)錯(cuò)?
業(yè)務(wù)包括:企業(yè)網(wǎng)站建設(shè)、手機(jī)網(wǎng)站制作、商城網(wǎng)站建設(shè)、網(wǎng)站營銷推廣等服務(wù),并且涵蓋域名與空間、網(wǎng)絡(luò)空間、云服務(wù)器、等互聯(lián)網(wǎng)基礎(chǔ)服務(wù);成都創(chuàng)新互聯(lián)公司聯(lián)建站以互聯(lián)網(wǎng)的創(chuàng)新理念,成熟完善的建站體系,開拓進(jìn)取的精神,專業(yè)的解決方案和顧問咨詢服務(wù),幫助客戶在互聯(lián)網(wǎng)時(shí)代提升形象、把握商機(jī)、實(shí)現(xiàn)價(jià)值,提高企業(yè)的核心競爭力。
$sql?=?"update?`user`?set?`id`='".$userId."',`username`=".$username.",`password`=".$password.",`email`=".$email.",`idgroup`=".$idgroup."?where?id=".$userId."";
改成
$sql?=?"update?`user`?set?`username`=".$username.",`password`=".$password.",`email`=".$email.",`idgroup`=".$idgroup."?where?id=".$userId."";
試試
舉例如下:
創(chuàng)建userinfo_update.php頁面用于查詢用戶信息,先顯示信息,在修改:
先通過GET獲取用戶編號(hào)查詢用戶信息:
$sql = "select * from user_info where user_id='".$_GET['userId']."'";
$result = mysql_query($sql,$con);
if($row = mysql_fetch_array($result)){
}
頁面效果:
創(chuàng)建update.php文件,用于修改用戶信息:
使用到了mysql_affected_rows() 函數(shù)返回前一次 MySQL 操作所影響的記錄行數(shù)。
//通過post獲取頁面提交數(shù)據(jù)信息
$userId = $_POST[userId];
$userName = $_POST[userName];
$userAge = $_POST[userAge];
$sql = "update user_info set user_name='".$userName."',user_age=".$userAge." where user_id='".$userId."'";
mysql_query($sql,$conn);//執(zhí)行SQL
$mark? = mysql_affected_rows();//返回影響行數(shù)
$url = "userinf_select.php";
運(yùn)行結(jié)果
創(chuàng)建delete.php文件,完成刪除用戶信息功能:
$userId = $_GET['userId'];
include 'connection.php';
$sql = "delete from user_info where user_id='".$userId."'";
mysql_query($sql,$con);
$mark? = mysql_affected_rows();//返回影響行數(shù)
if($mark0){
echo "刪除成功";
}else{
echo? "刪除失敗";
}
mysql_close($con);
運(yùn)行結(jié)果:
mysql_affected_rows($data_t)的結(jié)果是數(shù)組,怎么可能會(huì)==1.
也不知道你為什么要檢查它是否==1。
改為mysql_affected_rows($data_t)[n]倒有可能可以,n的值為你要檢查的是否等于1的那個(gè)值所在的列,記住,從零開始數(shù)。
建議在10行(sqlsrv_query)后面增加下面的語句:
if( $data === false ) {
echo $sql;
die( print_r( sqlsrv_errors(), true));
}
主要是查看SQL查詢是否執(zhí)行成功,另外也可以把echo $sql放在執(zhí)行前,當(dāng)需要修改的數(shù)據(jù)不存在(0條修改)的時(shí)候sqlsrv_query執(zhí)行會(huì)成功。
你的錯(cuò)誤主要在這里
$sql="UPDATE symbols SET country = '$_POST[country]',animal = '$_POST[animal]',cname='$_POST[cname_]' WHERE symbols.id=$_POST[id]";
當(dāng)存在中文字符時(shí),中文字符用''包圍,而英文字符不用,否則會(huì)出錯(cuò)的。
像這種symbols.id,句號(hào).只是用于表示指向的,如果是你在單個(gè)表中可以把表名省去,就用id就行,只有在多表查詢中才需要指明某個(gè)字段屬于哪個(gè)表單。
還有你下面的 $result=$mysqli-query(sql);sql前面應(yīng)該加一個(gè)$。
下面是我改的代碼,經(jīng)過測試可以方便使用:
有個(gè)比較怪異的地方是,$_POST[cname_],它在POST表單中自動(dòng)添加為cname_,這個(gè)是var_dump($_POST)測試的得到的結(jié)果,var_dump函數(shù)用于查看變量類型以及變量值的。還有后面把表單處改為
echo "form method='POST' action='{$_SERVER['PHP_SELF']}'";
actio指向自身,而且將其放在輸出循環(huán)中,字符集也改為了UTF8,header頭先輸出聲明,否則在IE以為的瀏覽器中會(huì)出現(xiàn)亂碼
?php
header("Content-type: text/html;charset=UTF-8");
$host = "localhost";
$user = "root";
$pass = "";
$db = "phpdev";
$mysqli = new mysqli($host, $user, $pass, $db);
if (mysqli_connect_errno()) {
die("Unable to connect!");
}
$mysqli-query("SET NAMES 'utf8'");
if (isset($_POST['bthModify'])) {
$sql="UPDATE {$db}.symbols SET country = '$_POST[country]',animal = '$_POST[animal]',cname='$_POST[cname_]' WHERE symbols.id=$_POST[id]";
$result=$mysqli-query($sql);
// var_dump($sql);
if ($result) {
echo "修改成功";
}else {
echo "修改失敗";
}
}
$query = "SELECT * FROM symbols";
if ($result = $mysqli-query($query)) {
if ($result-num_rows 0) {
echo "table cellpadding=10 border=1";
while($row = $result-fetch_array()) {
echo "form method='POST' action='{$_SERVER['PHP_SELF']}'";
echo "tr";
echo "tdinput name='id' type='text' id='id' value='$row[0]' //td";
echo "tdinput name='country' type='text' id='country' value='$row[1]' //td";
echo "tdinput name='animal' type='text' id='animal' value='$row[2]' //td";
echo "tdinput name='cname ' type='text' id='cname' value='$row[3]' //td";
echo "tdinput name='bthModify' type='submit' id='bthModify' value='修改' //td";
echo "/tr";
echo "/form";
}
echo "/table";
}
$result-close();
}
?
你是要將查詢出的數(shù)據(jù)中為空的字段補(bǔ)充信息,這樣可能有好幾個(gè)空字段,所以理想的方法是先找出需要更新的字段,最后再一次性更新。
foreach($arr[0] as $k = $val){ $data['id'] = $arr[0]['id']; if($val == null) $data[$k] = '寫入這句'; $m-save($data); }