PHP:MySQL选择查询与字符串操作

时间:2015-03-18 09:19:07

标签: php mysql arrays explode

我有一个数据库和一个包含大约100,000个键/值对记录的字符串,我想创建一个函数来查找该值。

考虑到性能(页面加载时间)和崩溃安全性,使用字符串或数据库是否更好?以下是我的两个代码示例:

1

echo find("Mohammad");

function find($value){
    $sql = mysql_query("SELECT * FROM `table` WHERE `name`='$value' LIMIT 1");
    $count = mysql_num_rows($sql);
    if($count > 0){
        $row = mysql_fetch_array($sql);
        return $row["family"];
    } else {
        return 'NULL';
    }
}

2

$string = "Ali:Golam,Mohammad:Offer,Reza:Now,Saber:Yes";

echo find($string,"Mohammad");

function find($string,$value){
    $array = explode(",",$string);
    foreach($array as $into) {
        $new = explode(":",$into);
        if($new[0] == $value) {
            return $new[1];
            break;
        }
    }
}

1 个答案:

答案 0 :(得分:3)

数据库非常有把握。

  1. 数据库很快,也许它们没有PHP中的基本字符串操作那么快,但如果有大量数据,数据库可能会更快。基本选择查询(在我当前的默认桌面硬件上)大约需要15毫秒,缓存时间不到1毫秒,如果索引正确,这几乎与表中的名称数量无关。所以你的网站总是很快。

  2. 数据库不会导致StackOverflow或内存不足错误并导致网站崩溃(这完全取决于您的PHP设置和硬件)

  3. 数据库更灵活,想象您想在创建第一个数据集后添加/删除/编辑名称。使用" INSERT INTO"," DELETE FROM"非常简单和"更新"修改数据,比在代码中的某个地方编辑大约100.000个条目更好。

  4. 您的代码

    1. 您肯定需要使用MySQLi or PDO,代码可能是这样的:
    2. $mysqli = new mysqli("host", "username", "password", "dbname");
      $stmt = $mysqli->prepare(
          'SELECT string FROM table WHERE name = ? LIMIT 1'
      );
      $stmt->bind_param("s", $value);
      $stmt->execute();
      $stmt->store_result();
      $stmt->bind_result($string);
      $stmt->fetch();
      $stmt->close();
      

      这使用MySQLiPrepared Statementsfor security),而不是被删除的MySQL扩展(in PHP 5.5