當前位置:首頁 » 編程語言 » phparraytoquery

phparraytoquery

發布時間: 2022-08-06 15:04:59

1. php鏈接請求返回值

<?php
/*
@filename abc.php
@author yanghua
how to use:
abc.php?abc=XXX(你要顯示的用戶)
*/
$usernames=array(0=>'aaaaa',1=>'bbbbb');//你要顯示的用戶必須放在這個數組中
$username=$_GET['abc'];
if(isset($username) && in_array($username,$usernames)){
echo $username."是本站用戶";
}
?>

2. PHP代碼創建Mysql資料庫

問題出在兩行 $conn = mysql_connect($server,$username,$password) or die ($couldNotConnectMysql);
mysql_select_db($database,$conn) or die ($couldNotOpenDatabase);,問題可能出現在你的,$username,$password,$database變數里邊
.最有可能是你的mysql的密碼不為123造成的,要麼把MySQL里的密碼改為123,要麼把$password改為你mysql里的密碼。

3. PHP 中Fetch,FetchAll從資料庫中取數據,遍歷出來的都是字元串嗎

舉例,首先看了pymysql裡面的cursor類,關於execute、fetchone和fetchall定義如下:
#調用self._query方法進行查詢
def execute(self, query, args=None):
"""Execute a query
:param str query: Query to execute.
:param args: parameters used with query. (optional)
:type args: tuple, list or dict
:return: Number of affected rows
:rtype: int
If args is a list or tuple, %s can be used as a placeholder in the query.
If args is a dict, %(name)s can be used as a placeholder in the query.
"""
while self.nextset():
pass
query = self.mogrify(query, args)
result = self._query(query)
self._executed = query
return result
#調用_do_get_result獲取查詢結果
def _query(self, q):
conn = self._get_db()
self._last_executed = q
self._clear_result()
conn.query(q)
self._do_get_result()
return self.rowcount
#這里獲取結果
def _do_get_result(self):
conn = self._get_db()
self._result = result = conn._result
self.rowcount = result.affected_rows
self.description = result.description
self.lastrowid = result.insert_id
self._rows = result.rows
self._warnings_handled = False

if not self._defer_warnings:
self._show_warnings()
其實看到這里代碼邏輯已經很清楚了,在調用cursor.execute執行SQL的時候,就將MySQL查詢的結果放到result這個變數里了,也就是說結果集放到了客戶端的內存變數里,那麼獲取數據的方式也就是從這個內存變數里去獲取數據,只是獲取的行為有所不同而已了。
def fetchone(self):
"""Fetch the next row"""
self._check_executed()
if self._rows is None or self.rownumber >= len(self._rows):
return None
result = self._rows[self.rownumber]
self.rownumber += 1
return result

def fetchmany(self, size=None):
"""Fetch several rows"""
self._check_executed()
if self._rows is None:
return ()
end = self.rownumber + (size or self.arraysize)
result = self._rows[self.rownumber:end]
self.rownumber = min(end, len(self._rows))
return result
def fetchall(self):
"""Fetch all the rows"""
self._check_executed()
if self._rows is None:
return ()
if self.rownumber:
result = self._rows[self.rownumber:]
else:
result = self._rows
self.rownumber = len(self._rows)
return result
口說無憑,我們直接通過Wireshark抓包來證明一下,首先我在本地執行腳本如下,然後我監聽本地的網卡流量
import pymysql
conn = pymysql.connect(host='xxx', port=3306,
user='xucl', password='xuclxucl', database='xucl')
cursor = conn.cursor()
cursor.execute("select * from t")
注意,我這里並沒有執行fetch操作,如果監聽到的包裡麵包含了結果,那麼就證明我們前面的分析是正確的,話不多說開始實驗,Wireshark抓包如下:
果然跟我們之前的預測是一致的,即使沒有進行fetch操作,MySQL也將結果集發送到客戶端了。另外關於結果集發送,可以參考我另外一篇文章:《由一個抓瞎的SQL引申出去》

結論:
客戶端執行SQL的時候,MySQL一次性將結果集發送給了客戶端
客戶端接收到結果集以後存儲本地內存變數中
fetch結果只是從這個本地變數中獲取,fetchone/fetchmany/fetchall只是獲取行為的不通,因此對於MySQL來說並沒有什麼不通的。

4. 如何使用PHP向資料庫中插入圖片,,並且使得圖片可以顯示在頁面上

一般不向資料庫插入圖片 而是插入圖片的src 通過src找到圖片然後顯示。
<?php
session_start();

//array數組中放圖片的格式
$uptypes = array("image/jpg","image/jpeg","image/png","image/pjpeg","image/gif","image/bmp","image/x-png");
$files =$_FILES["uppic"];
if($files["size"]>2097152){ //圖片大小判斷
echo "上傳圖片不能大於2M";
echo "<meta http-equiv='REFRESH' CONTENT='1;URL=pic.php'>";
exit;
}
$ftype =$files["type"];
if(!in_array($ftype,$uptypes)){ //圖片格式判斷
echo "上傳的圖片文件格式不正確";
echo "<meta http-equiv='REFRESH' CONTENT='1;URL=pic.php'>";
}
$fname = $files["tmp_name"]; //在伺服器臨時存儲名稱
$image_info = getimagesize($fname);
$name = $files["name"];
$str_name = pathinfo($name); //以數組的形式返迴文件路勁的信息
$extname = strtolower($str_name["extension"]); //把字元串改為小寫 extensiorn擴展名
$upload_dir = "upload/"; //upload文件夾
$file_name = date("YmdHis").rand(1000,9999).".".$extname;
$str_file = $upload_dir.$file_name; //文件目錄
//存入資料庫
$con=mysql_connect("localhost","root","");
if(!$con){
die(("資料庫連接失敗").mysql_error());
}
mysql_select_db("mywork",$con);
$sql="update user set picpath='$str_file' where user_name='$username'"; //將圖片地址插入資料庫mywork
mysql_query($sql,$con);
mysql_close($con);
if(!file_exists($upload_dir)){
mkdir($upload_dir); //創建目錄 成功則返回true 失敗則返回flase
}
if(!move_uploaded_file($files["tmp_name"],$str_file)){ //將上傳的文件移動到新的目錄 要移動文件 和文件新目錄 成功則返回true
echo "圖片上傳失敗";
echo "<meta http-equiv='REFRESH' CONTENT='1;URL=插入失敗後希望跳轉的頁面>";
}
else{
//echo "<img src=".$str_file.">";
echo "圖片上傳成功";
echo "<meta http-equiv='REFRESH' CONTENT='1;URL=插入成功希望挑戰的頁面>";
}

5. php 中$result為什麼會有屬性num_rows屬性

num_rows 是原生mysql中的mysql_num_rows() 函數,用來返回結果集中行的數目.

而你這里的num_rows 是被封裝成mysql類了,具體你要去看你程序里的mysql類是怎麼使用的.



而你給出的代碼也很明顯

$num_cats=@$result->num_rows;
if($num_cats==0){
returnfalse;
}


自定義變數$num_cats= 等於 num_rows返回的數目

那麼接下來就一個判斷

如果返回的數目等於0那麼 返回false false=假


$result=db_result_to_array($result);
resutn $result;


最後這里返回的應該是一個數組 db_result_to_array()

6. php 參數傳遞問題($_GET('id'))

while($row=mysql_fetch_array($query)){
?>
<a href=ceshi2.php?id=<?=$row['id']?> ><?=$row['user']?></a>
<?
}
本來就只會出現最後一個,因為它循環到最後就是最後一個
寫成
ceshi.php
<?
include("conn.php");
$SQL="SELECT * FROM message order by id desc";
$query=mysql_query($SQL);
$arr = array();
while($row = mssql_fetch_array($query)){
$arr[]=$row;
}
$len=count($arr);
for($i=0;$i<$len;$i++){
echo"<a href=ceshi2.php?id=<?=$arr[$i]['id『]?> ><?=$arr[$i][』user『]?></a>";
}
?>

ceshi2.php
<?php
include("conn.php");
$SQL="select * from message where id=".$_GET['id'];
$query=mysql_query($SQL);
while($row = mssql_fetch_array($query)){
$arr[]=$row;
}
print_r($arr);
?>

7. PHP 採集程序中常用的函數

復制代碼
代碼如下:
//獲得當前的腳本網址
function
get_php_url()
{
if(!empty($_SERVER[」REQUEST_URI」]))
{
$scriptName
=
$_SERVER[」REQUEST_URI」];
$nowurl
=
$scriptName;
}
else
{
$scriptName
=
$_SERVER[」PHP_SELF」];
if(empty($_SERVER[」QUERY_STRING」]))
$nowurl
=
$scriptName;
else
$nowurl
=
$scriptName.」?」.$_SERVER[」QUERY_STRING」];
}
return
$nowurl;
}
//把全形數字轉為半形數字
function
GetAlabNum($fnum)
{
$nums
=
array(」0」,」1」,」2」,」3」,」4」,」5」,」6」,」7」,」8」,」9」);
$fnums
=
「0123456789″;
for($i=0;$i<=9;$i++)
$fnum
=
str_replace($nums[$i],$fnums[$i],$fnum);
$fnum
=
ereg_replace(」[^0-9\.]|^0{1,}」,」」,$fnum);
if($fnum==」」)
$fnum=0;
return
$fnum;
}
//去除HTML標記
function
Text2Html($txt)
{
$txt
=
str_replace(」
「,」」,$txt);
$txt
=
str_replace(」<」,」<」,$txt);
$txt
=
str_replace(」>」,」>」,$txt);
$txt
=
preg_replace(」/[\r\n]{1,}/isU」,」<br/>\r\n」,$txt);
return
$txt;
}
//清除HTML標記
function
ClearHtml($str)
{
$str
=
str_replace('<','<',$str);
$str
=
str_replace('>','>',$str);
return
$str;
}
//相對路徑轉化成絕對路徑
function
relative_to_absolute($content,
$feed_url)
{
preg_match('/(http|https|ftp):\/\//',
$feed_url,
$protocol);
$server_url
=
preg_replace(」/(http|https|ftp|news):\/\//」,
「」,
$feed_url);
$server_url
=
preg_replace(」/\/.*/」,
「」,
$server_url);
if
($server_url
==
」)
{
return
$content;
}
if
(isset($protocol[0]))
{
$new_content
=
preg_replace('/href=」\//',
『href=」『.$protocol[0].$server_url.'/',
$content);
$new_content
=
preg_replace('/src=」\//',
'src=」『.$protocol[0].$server_url.'/',
$new_content);
}
else
{
$new_content
=
$content;
}
return
$new_content;
}
//取得所有鏈接
function
get_all_url($code){
preg_match_all('/<a\s+href=[」|\']?([^>」\'
]+)[」|\']?\s*[^>]*>([^>]+)<\/a>/i',$code,$arr);
return
array('name'=>$arr[2],'url'=>$arr[1]);
}
//獲取指定標記中的內容
function
get_tag_data($str,
$start,
$end)
{
if
(
$start
==

||
$end
==

)
{
return;
}
$str
=
explode($start,
$str);
$str
=
explode($end,
$str[1]);
return
$str[0];
}
//HTML表格的每行轉為CSV格式數組
function
get_tr_array($table)
{
$table
=
preg_replace(」『<td[^>]*?>'si」,'」『,$table);
$table
=
str_replace(」</td>」,'」,',$table);
$table
=
str_replace(」</tr>」,」{tr}」,$table);
//去掉
HTML
標記
$table
=
preg_replace(」『<[\/\!]*?[^<>]*?>'si」,」」,$table);
//去掉空白字元
$table
=
preg_replace(」『([\r\n])[\s]+'」,」」,$table);
$table
=
str_replace(」
「,」」,$table);
$table
=
str_replace(」
「,」」,$table);
$table
=
explode(」,{tr}」,$table);
array_pop($table);
return
$table;
}
//將HTML表格的每行每列轉為數組,採集表格數據
function
get_td_array($table)
{
$table
=
preg_replace(」『<table[^>]*?>'si」,」」,$table);
$table
=
preg_replace(」『<tr[^>]*?>'si」,」」,$table);
$table
=
preg_replace(」『<td[^>]*?>'si」,」」,$table);
$table
=
str_replace(」</tr>」,」{tr}」,$table);
$table
=
str_replace(」</td>」,」{td}」,$table);
//去掉
HTML
標記
$table
=
preg_replace(」『<[\/\!]*?[^<>]*?>'si」,」」,$table);
//去掉空白字元
$table
=
preg_replace(」『([\r\n])[\s]+'」,」」,$table);
$table
=
str_replace(」
「,」」,$table);
$table
=
str_replace(」
「,」」,$table);
$table
=
explode('{tr}',
$table);
array_pop($table);
foreach
($table
as
$key=>$tr)
{
$td
=
explode('{td}',
$tr);
array_pop($td);
$td_array[]
=
$td;
}
return
$td_array;
}
//返回字元串中的所有單詞
$distinct=true
去除重復
function
split_en_str($str,$distinct=true)
{
preg_match_all('/([a-zA-Z]+)/',$str,$match);
if
($distinct
==
true)
{
$match[1]
=
array_unique($match[1]);
}
sort($match[1]);
return
$match[1];
}

熱點內容
內存大小的存儲 發布:2025-01-22 18:58:17 瀏覽:392
tampermonkey腳本 發布:2025-01-22 18:53:17 瀏覽:116
windows7共享文件夾 發布:2025-01-22 18:53:17 瀏覽:478
如何調節安卓手機的內存 發布:2025-01-22 18:49:30 瀏覽:638
佳能相機存儲卡怎麼取消 發布:2025-01-22 18:40:59 瀏覽:568
天貓寶貝上傳 發布:2025-01-22 18:35:09 瀏覽:544
ipad如何登錄金鏟鏟安卓賬號 發布:2025-01-22 18:32:09 瀏覽:319
加密溝通 發布:2025-01-22 18:31:22 瀏覽:555
win7ftp用戶名和密碼設置 發布:2025-01-22 17:46:48 瀏覽:221
三表聯查的sql語句 發布:2025-01-22 17:27:13 瀏覽:418