第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

參考:使用MySQL擴(kuò)展的完美代碼示例是什么?

參考:使用MySQL擴(kuò)展的完美代碼示例是什么?

MM們 2019-06-14 15:38:28
參考:使用MySQL擴(kuò)展的完美代碼示例是什么?這是為了創(chuàng)建一個(gè)社區(qū)學(xué)習(xí)資源..我們的目標(biāo)是有好的代碼示例,這些代碼不會(huì)重復(fù)復(fù)制/粘貼PHP代碼中經(jīng)常出現(xiàn)的可怕錯(cuò)誤。我已經(jīng)要求它成為社區(qū)維基。這是不是作為編碼比賽。它不是尋找最快或最緊湊的方式來進(jìn)行查詢-它是提供一個(gè)好的,可讀的參考,特別是對(duì)新手。每天都有大量的問題涌入真的很糟糕使用mysql_*堆棧溢出的函數(shù)族。雖然通常最好將這些人引導(dǎo)到PDO,但有時(shí)這既不可能(例如繼承的遺留軟件),也不現(xiàn)實(shí)(用戶已經(jīng)在他們的項(xiàng)目中使用它)。使用mysql_*圖書館包括:SQL注入值限制子句和動(dòng)態(tài)表名中的SQL注入沒有錯(cuò)誤報(bào)告(“為什么這個(gè)查詢不能工作?”)錯(cuò)誤報(bào)告(也就是說,即使在代碼投入生產(chǎn)時(shí)也會(huì)發(fā)生錯(cuò)誤)值輸出中的跨站點(diǎn)腳本(Xss)注入讓我們編寫一個(gè)PHP代碼示例,它使用MySQL_*函數(shù)族:接受兩個(gè)員額值,id(數(shù)字)及name(a字符串)對(duì)表執(zhí)行更新查詢tablename,更改name列中具有ID的id如果出現(xiàn)故障,請(qǐng)友好地退出,但只在生產(chǎn)模式中顯示詳細(xì)的錯(cuò)誤。trigger_error()就足夠了;或者使用您選擇的方法。輸出消息“$name最新情況“。而且真的不顯示上面列出的任何弱點(diǎn)。應(yīng)該是盡可能簡單..理想情況下,它不包含任何函數(shù)或類。目標(biāo)不是創(chuàng)建副本/可壓縮庫,而是創(chuàng)建顯示使數(shù)據(jù)庫查詢安全所需的最小操作。好的評(píng)論加分。這樣做的目的是使這個(gè)問題成為一個(gè)資源,當(dāng)用戶遇到一個(gè)有錯(cuò)誤代碼的問題詢問者(盡管它根本不是問題的焦點(diǎn))或者遇到一個(gè)失敗的查詢并且不知道如何解決它時(shí),用戶可以鏈接到這個(gè)資源。預(yù)先阻止PDO的討論:是的,它往往會(huì)更好地指導(dǎo)個(gè)人寫這些問題的PDO。當(dāng)它成為一種選擇時(shí),我們應(yīng)該這樣做。然而,這并不總是可能的-有時(shí),問題問者正在處理遺留代碼,或者已經(jīng)有了很長的路要用這個(gè)庫,而且現(xiàn)在不太可能改變它。此外,mysql_*如果使用得當(dāng),功能家族是完全安全的。所以這里沒有“使用PDO”的答案。
查看完整描述

3 回答

?
慕仙森

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊

我的刺。試著保持它盡可能簡單,同時(shí)仍然保持一些現(xiàn)實(shí)世界的便利。

處理Unicode,并使用松散比較來實(shí)現(xiàn)可讀性。友好點(diǎn);-)

<?php

header('Content-type: text/html; charset=utf-8');error_reporting(E_ALL | E_STRICT);ini_set('display_errors', 1);
// display_errors can be changed to 0 in production mode to// suppress PHP's error messages/*
Can be used for testing
$_POST['id'] = 1;
$_POST['name'] = 'Markus';
*/$config = array(
    'host' => '127.0.0.1', 
    'user' => 'my_user', 
    'pass' => 'my_pass', 
    'db' => 'my_database');# Connect and disable mysql error output$connection = @mysql_connect($config['host'], 
    $config['user'], $config['pass']);if (!$connection) {
    trigger_error('Unable to connect to database: ' 
        . mysql_error(), E_USER_ERROR);}if (!mysql_select_db($config['db'])) {
    trigger_error('Unable to select db: ' . mysql_error(), 
        E_USER_ERROR);}if (!mysql_set_charset('utf8')) {
    trigger_error('Unable to set charset for db connection: ' 
        . mysql_error(), E_USER_ERROR);}$result = mysql_query(
    'UPDATE tablename SET name = "' 
    . mysql_real_escape_string($_POST['name']) 
    . '" WHERE id = "' 
    . mysql_real_escape_string($_POST['id']) . '"');if ($result) {
    echo htmlentities($_POST['name'], ENT_COMPAT, 'utf-8') 
        . ' updated.';} else {
    trigger_error('Unable to update db: ' 
        . mysql_error(), E_USER_ERROR);}


查看完整回答
反對(duì) 回復(fù) 2019-06-14
?
ITMISS

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個(gè)贊

我決定跳過槍放點(diǎn)東西。一開始就是這樣。在錯(cuò)誤時(shí)拋出異常。

function executeQuery($query, $args) {
    $cleaned = array_map('mysql_real_escape_string', $args);

    if($result = mysql_query(vsprintf($query, $cleaned))) {
        return $result;
    } else {
        throw new Exception('MySQL Query Error: ' . mysql_error());
    }}function updateTablenameName($id, $name) {
    $query = "UPDATE tablename SET name = '%s' WHERE id = %d";

    return executeQuery($query, array($name, $id));}try {
    updateTablenameName($_POST['id'], $_POST['name']);} catch(Exception $e) {
    echo $e->getMessage();
    exit();}


查看完整回答
反對(duì) 回復(fù) 2019-06-14
  • 3 回答
  • 0 關(guān)注
  • 398 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)