Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

PHP फ़ाइल कोड के कुछ भाग में प्रवेश नहीं कर सकती

जैसा कि ऊपर टिप्पणी में लिखा गया है, आपको अपने जीवन को आसान बनाने के लिए विभाजित और जीतना चाहिए (विशेषकर जब आप उस बड़े फ़ंक्शन में इसके साथ खेलते समय कोड लिखते हैं)। यह उतना ही आसान काम करता है:

function file_put($number, $data)
{
    $path = sprintf("C:/temp/wamp/www/file%d.txt", $number);
    file_put_contents($path, $data);
}

उदाहरण के लिए जो कई डुप्लिकेट लाइनों की जगह ले रहा है जहां आपको बस एक (क्रमांकित) फ़ाइल की आवश्यकता है जिसमें आपने कुछ स्ट्रिंग डाली है।

लेकिन आप इसे अधिक जटिल सामग्री के साथ भी कर सकते हैं, जैसे डेटाबेस ऑपरेशन। आप संभवतः त्रुटि प्रबंधन को अपनी दृष्टि से हटाना चाहते हैं और साथ ही आवश्यकता पड़ने पर डेटाबेस से कनेक्ट करने का ध्यान रखना चाहते हैं और डेटा प्राप्त करने का एक अधिक लचीला तरीका चाहते हैं। यह (धीरे-धीरे बहिष्कृत) mysql_* . को स्थानांतरित करके किया जा सकता है अपने स्वयं के एक या दो वर्गों में कार्य करता है, ताकि यह आपकी दृष्टि से ओझल हो जाए। इससे इसका उपयोग और भी आसान हो जाएगा (जो मैं पहले दिखाता हूं):

// Create your database object to use it later on:
$config = array(
    'server' => 'localhost',
    'name' => 'root',
    'password' => '',
    'db' => 'test',
);
$db = new MySql($config);

मैंने डेटाबेस क्लास MySql . को कॉल किया क्योंकि यह mysql कनेक्शन का प्रतिनिधित्व करता है और यह पुराने mysql एक्सटेंशन के साथ काम करता है। आपको केवल उस डेटाबेस ऑब्जेक्ट को अपने प्रश्न में फ़ंक्शन में पास करने की आवश्यकता है। file_put . के साथ संयुक्त समारोह, यह इस तरह दिखेगा:

function checkin(MySql $DB, $TechID, $ClientID, $SiteID)
{
    $query = sprintf("SELECT `Type` FROM `Log` WHERE `TechID` = '%d' ORDER BY LogTime DESC LIMIT 1", $TechID);
    file_put(5, $query);

    $result1 = $DB->query("SELECT COUNT(*) FROM Log");    
    $result2 = $DB->query($query);

    foreach ($result1 as $row1) {
        list($count) = $row1;
        $data = "ClientID:$ClientID TechID:$TechID SiteID:$SiteID Count:$count"
        file_put(3, $data);
        foreach ($result2 as $row2) {
            file_put(4, $data);
        }
    }
}

अभी भी checkin . है फ़ंक्शन बड़े होने के करीब है (पहले से कोड की 12 पंक्तियाँ), लेकिन यह आपके पहले संस्करण की तुलना में बहुत छोटा है क्योंकि यह फाइलों को लिखने और डेटाबेस तक पहुँचने के लिए काम को दर्शाता है। मुझे आशा है कि यह प्रदर्शन उपयोगी है। पूरा कोड उदाहरण इस प्रकार है:

/**
 * MySql Exception
 */
class MySqlException extends RuntimeException
{
}

/**
 * MySql Database Class
 */
class MySql
{
    private $server;
    private $name;
    private $password;
    private $db;
    private $connection;

    public function __construct(array $config)
    {
        $this->server = $config['server'];
        $this->name = $config['name'];
        $this->password = $config['password'];
        $this->db = $config['db'];
    }

    private function connect($server, $name, $password)
    {
        $this->connection = mysql_connect($server, $name, $password);
        if (!$this->connection) {
            $this->error("Unable to connect to '%s' as user '%s'", $server, $name);
        }
    }

    private function select($db)
    {
        if (!mysql_select_db($db, $this->connection)) {
            $this->error("Unable to select database '%s'", $db);
        }
    }

    private function close()
    {
        $this->connection && mysql_close($this->connection);
    }

    private function connectSelect()
    {
        $this->connect($this->server, $this->name, $this->password);
        $this->select($this->db);
    }

    /**
     * @param $query
     * @return MySqlResult
     */
    public function query($query)
    {
        $this->connection || $this->connectSelect();
        $result = mysql_query($query, $this->connection);
        if (!$result) {
            $this->error("Unable to execute query '%s'", $query);
        }
        return new MySqlResult($result);
    }

    /**
     * @param string $format
     * @param ...
     * @throws MySqlException
     */
    private function error($format)
    {
        $args = func_get_args();
        array_shift($args);
        $format .= ': %s';
        $args[] = $this->connection ? mysql_error($this->connection) : mysql_error();
        throw new MySqlException(vsprintf($format, $args));
    }

    public function __destruct()
    {
        $this->close();
    }
}

/**
 * MySql Result Set - Array Based
 */
class MySqlResult implements Iterator, Countable
{
    private $result;
    private $index = 0;
    private $current;

    public function __construct($result)
    {
        $this->result = $result;
    }

    public function fetch($result_type = MYSQL_BOTH)
    {
        $this->current = mysql_fetch_array($this->result, $result_type);
        return $this->current;
    }

    /**
     * Return the current element
     * @link http://php.net/manual/en/iterator.current.php
     * @return array
     */
    public function current()
    {
        return $this->current;
    }

    public function next()
    {
        $this->current && $this->fetch();
    }

    /**
     * Return the key of the current element
     * @link http://php.net/manual/en/iterator.key.php
     * @return mixed scalar on success, or null on failure.
     */
    public function key()
    {
        return $this->current ? $this->index : null;
    }

    /**
     * Checks if current position is valid
     * @link http://php.net/manual/en/iterator.valid.php
     * @return boolean The return value will be casted to boolean and then evaluated.
     * Returns true on success or false on failure.
     */
    public function valid()
    {
        return (bool)$this->current;
    }

    /**
     * Rewind the Iterator to the first element
     * @link http://php.net/manual/en/iterator.rewind.php
     * @return void Any returned value is ignored.
     */
    public function rewind()
    {
        $this->fetch();
    }

    /**
     * Count of rows.
     *
     * @link http://php.net/manual/en/countable.count.php
     * @return int The count of rows as an integer.
     */
    public function count()
    {
        return mysql_num_rows($this->result);
    }
}

// Create your database object to use it later on:
$config = array(
    'server' => 'localhost',
    'name' => 'root',
    'password' => '',
    'db' => 'test',
);
$db = new MySql($config);

function file_put($number, $data)
{
    $path = sprintf("C:/temp/wamp/www/file%d.txt", $number);
    file_put_contents($path, $data);
}

function checkin(MySql $DB, $TechID, $ClientID, $SiteID)
{
    $query = sprintf("SELECT `Type` FROM `Log` WHERE `TechID` = '%d' ORDER BY LogTime DESC LIMIT 1", $TechID);
    file_put(5, $query);

    $result1 = $DB->query("SELECT COUNT(*) FROM Log");    
    $result2 = $DB->query($query);

    foreach ($result1 as $row1) {
        list($count) = $row1;
        $data = "ClientID:$ClientID TechID:$TechID SiteID:$SiteID Count:$count";
        file_put(3, $data);
        foreach ($result2 as $row2) {
            file_put(4, $data);
        }
    }
}

checkin($db, 1, 2, 3, 4);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. विदेशी कुंजी के रूप में समग्र प्राथमिक कुंजी का प्रयोग करें

  2. MySQL में कॉलम के प्रतिशत की गणना कैसे करें

  3. MySQL में पिछले 24 घंटों के रिकॉर्ड कैसे प्राप्त करें?

  4. MySQL से चिपके रहने के 10 कारण

  5. रिकॉर्ड से HTML टैग हटाएं