備忘錄_20160105(定位) 修改 回首頁

程式 2021-09-17 17:31:07 1631871067 100
mariadb+php test

mariadb+php test

<?php
  
  // for mariadb
  
  function getOConn()
  {
    $strServer='127.0.0.1:3306';
    $strUsername='...';
    $strPassword='...';
    $strDatabase='test';
    
    return new mysqli($strServer, $strUsername, $strPassword, $strDatabase);
  }
  
  function getStrNum($strData)
  {
    return strval(floatval($strData));
  }
  
  function getStrTxt($oConn, $strData)
  {
    return "'" . $oConn->real_escape_string($strData) . "'"; // unicode 也可以
  }
  
  function getStrTypeName($iTypeNum)
  {
    if($iTypeNum==MYSQLI_TYPE_DECIMAL) { return 'MYSQLI_TYPE_DECIMAL'; }
    if($iTypeNum==MYSQLI_TYPE_NEWDECIMAL) { return 'MYSQLI_TYPE_NEWDECIMAL'; }
    if($iTypeNum==MYSQLI_TYPE_BIT) { return 'MYSQLI_TYPE_BIT'; }
    if($iTypeNum==MYSQLI_TYPE_TINY) { return 'MYSQLI_TYPE_TINY'; }
    if($iTypeNum==MYSQLI_TYPE_SHORT) { return 'MYSQLI_TYPE_SHORT'; }
    if($iTypeNum==MYSQLI_TYPE_LONG) { return 'MYSQLI_TYPE_LONG'; }
    if($iTypeNum==MYSQLI_TYPE_FLOAT) { return 'MYSQLI_TYPE_FLOAT'; }
    if($iTypeNum==MYSQLI_TYPE_DOUBLE) { return 'MYSQLI_TYPE_DOUBLE'; }
    if($iTypeNum==MYSQLI_TYPE_NULL) { return 'MYSQLI_TYPE_NULL'; }
    if($iTypeNum==MYSQLI_TYPE_TIMESTAMP) { return 'MYSQLI_TYPE_TIMESTAMP'; }
    if($iTypeNum==MYSQLI_TYPE_LONGLONG) { return 'MYSQLI_TYPE_LONGLONG'; }
    if($iTypeNum==MYSQLI_TYPE_INT24) { return 'MYSQLI_TYPE_INT24'; }
    if($iTypeNum==MYSQLI_TYPE_DATE) { return 'MYSQLI_TYPE_DATE'; }
    if($iTypeNum==MYSQLI_TYPE_TIME) { return 'MYSQLI_TYPE_TIME'; }
    if($iTypeNum==MYSQLI_TYPE_DATETIME) { return 'MYSQLI_TYPE_DATETIME'; }
    if($iTypeNum==MYSQLI_TYPE_YEAR) { return 'MYSQLI_TYPE_YEAR'; }
    if($iTypeNum==MYSQLI_TYPE_NEWDATE) { return 'MYSQLI_TYPE_NEWDATE'; }
    if($iTypeNum==MYSQLI_TYPE_INTERVAL) { return 'MYSQLI_TYPE_INTERVAL'; }
    if($iTypeNum==MYSQLI_TYPE_ENUM) { return 'MYSQLI_TYPE_ENUM'; }
    if($iTypeNum==MYSQLI_TYPE_SET) { return 'MYSQLI_TYPE_SET'; }
    
    if($iTypeNum==MYSQLI_TYPE_TINY_BLOB) { return 'MYSQLI_TYPE_TINY_BLOB'; }
    if($iTypeNum==MYSQLI_TYPE_MEDIUM_BLOB) { return 'MYSQLI_TYPE_MEDIUM_BLOB'; }
    if($iTypeNum==MYSQLI_TYPE_LONG_BLOB) { return 'MYSQLI_TYPE_LONG_BLOB'; }
    if($iTypeNum==MYSQLI_TYPE_BLOB) { return 'MYSQLI_TYPE_BLOB'; }
    
    if($iTypeNum==MYSQLI_TYPE_VAR_STRING) { return 'MYSQLI_TYPE_VAR_STRING'; }
    if($iTypeNum==MYSQLI_TYPE_STRING) { return 'MYSQLI_TYPE_STRING'; }
    if($iTypeNum==MYSQLI_TYPE_CHAR) { return 'MYSQLI_TYPE_CHAR'; }
    if($iTypeNum==MYSQLI_TYPE_JSON) { return 'MYSQLI_TYPE_JSON'; }
    
    if($iTypeNum==MYSQLI_TYPE_GEOMETRY) { return 'MYSQLI_TYPE_GEOMETRY'; }
    return 'nuknownNum=' . $iTypeNum;
  }
  
  // mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
  
  $oConn=getOConn();
  
  while(true)
  {
    if($oConn->connect_errno!=0)
    {
      echo 'conn err:' . $oConn->connect_error;
      break;
    }
    
    $strSQL='create or replace table tb1(i int primary key, nvc nvarchar(2000) not null);';
    if($oConn->query($strSQL)===false)
    {
      echo 'query err:' . $oConn->error . '<br>sql:' . htmlspecialchars($strSQL) . '<br>'; break;
    }
    
    $strSQL='insert into tb1(i,nvc) values(' . getStrNum('1') . ',' . getStrTxt($oConn, '許蓋功氷') . ');';
    if($oConn->query($strSQL)===false) { echo '(新增)query err:' . $oConn->error . '<br>sql:' . htmlspecialchars($strSQL) . '<br>';  }
    else { echo '(新增)query success:' . $oConn->affected_rows . 'records.<br>'; }
    
    $strSQL='insert into tb1(i,nvc) values(' . getStrNum('2') . ',' . getStrTxt($oConn, "It's a good database!") . ');';
    if($oConn->query($strSQL)===false) { echo '(新增)query err:' . $oConn->error . '<br>sql:' . htmlspecialchars($strSQL) . '<br>'; }
    else { echo '(新增)query success:' . $oConn->affected_rows . 'records.<br>'; }
    
    $strSQL='insert into tb1(i,nvc) values(' . getStrNum('3') . ',' . getStrTxt($oConn, "太棒了!Great!") . ');';
    if($oConn->query($strSQL)===false) { echo '(新增)query err:' . $oConn->error . '<br>sql:' . htmlspecialchars($strSQL) . '<br>'; }
    else { echo '(新增)query success:' . $oConn->affected_rows . 'records.<br>'; }
    
    $strSQL='update tb1 set nvc=concat(\'--\', nvc);';
    if($oConn->query($strSQL)===false) { echo '(修改)query err:' . $oConn->error . '<br>sql:' . htmlspecialchars($strSQL) . '<br>'; }
    else { echo '(修改)query success:' . $oConn->affected_rows . 'records.<br>'; }
    
    $strSQL='select * from tb1;';
    $oResult=$oConn->query($strSQL);
    if($oResult===false) 
    {
      echo '(查詢)query err:' . $oConn->error . '<br>sql:' . htmlspecialchars($strSQL) . '<br>'; 
    }
    else 
    {
      echo '回傳列數:' . $oResult->num_rows . '<br>';
      echo '回傳欄數:' . $oResult->field_count . '<br>';
      
      $oFields=$oResult->fetch_fields();
      for($iCol=0; $iCol<$oResult->field_count; $iCol++)
      {
        echo '[' . $oFields[$iCol]->name . '] '; // column name
        echo getStrTypeName($oFields[$iCol]->type) . '<br>'; // column type
      }
      echo '<hr>';
      
      while ($oRow = $oResult->fetch_array(MYSQLI_BOTH))
      {
        echo htmlentities($oRow['i']) . '-' . htmlentities($oRow['nvc']) . '<br>';
      }
      
    }
    
    $strSQL='delete from tb1 where i=2;';
    if($oConn->query($strSQL)===false) { echo '(刪除)query err:' . $oConn->error . '<br>sql:' . htmlspecialchars($strSQL) . '<br>'; }
    else { echo '(刪除)query success:' . $oConn->affected_rows . 'records.<br>'; }
    
    break;
  }

  if($oConn->connect_errno==0) { $oConn->close(); }
  
?>