select a.*,b.* from a,b where 外键相连.红色部分必须的要,不然数据是的笛卡儿积非常的多.
解决方案 »
- 安装使用PHPnow后程序无法使用问题
- 跪求各位php大虾进来给小弟解决一下
- file_put_contents函数写入数据的问题
- 在ZEND里新建一个项目,在检查debug server 连接时一直提示Zend Debug Server 未连接,我是在本地测试的
- Discuz论坛的可能比较简单的问题
- so奇怪的一个东东,php竟然执行了两次
- mysql_query("update tb set isread=1 where msgid='$array[msgid]'");对不对?
- header(location:xxxxxx)在我机子上可以正确执行,但是拷到同学机子上就没反应了,为什么?
- 请问如何通过PHP来控制SERV_U FTP的用户及密码等系统设置呢?
- 极度奇怪的问题,大神来看看,一般人估计解决不了
- 【简单问题 50分】如何可以让它不跳转到首页?
- php中如何对这样的字符串进行切分?
select * from b;
行不?
http://www.kingofcoders.com
public function call_sp_ext($query){
$this->mysqli->multi_query($query);
$i = 0 ;
do {
//////////////////////第0个记录集. 默认////////////////////////
if ($i==0)
{
if ($result = $this->mysqli->use_result()){
while ($row = $result->fetch_row()){
$this->row[$this->count++] = $row;
}
$result->close();
}
}
//////////////////////第1个记录集. 假设有的话////////////////////////
if ($i==1)
{
if ($result = $this->mysqli->use_result()){
while ($row = $result->fetch_row()){
$this->row1[$this->count1++] = $row;
}
$result->close();
}
}
//////////////////////第2个记录集. 假设有的话////////////////////////
if ($i==2)
{
if ($result = $this->mysqli->use_result()){
while ($row = $result->fetch_row()){
$this->row2[$this->count2++] = $row;
}
$result->close();
}
}
//////////////////////第3个记录集. 假设有的话////////////////////////
if ($i==3)
{
if ($result = $this->mysqli->use_result()){
while ($row = $result->fetch_row()){
$this->row3[$this->count3++] = $row;
}
$result->close();
}
}
//////////////////////第4个记录集. 假设有的话////////////////////////
if ($i==4)
{
if ($result = $this->mysqli->use_result()){
while ($row = $result->fetch_row()){
$this->row4[$this->count4++] = $row;
}
$result->close();
}
}
//////////////////////第5个记录集. 假设有的话////////////////////////
if ($i==5)
{
if ($result = $this->mysqli->use_result()){
while ($row = $result->fetch_row()){
$this->row5[$this->count5++] = $row;
}
$result->close();
}
}
//////////////////////最大设置有6个记录集供使用////////////////////////
$i = $i + 1;
} while($this->mysqli->next_result());
$this->affected_row_sp = $this->mysqli->affected_rows; }
<?php
define ('MY_HOST','localhost');
define ('MY_USER','root');
define ('MY_PASS','');
define ('MY_DB','develop');
define ('MY_PORT','3306');
//For linux add this field
define ('MY_SOCKET','/tmp/mysql_sock');
class Model_MysqliExt{ private $mysqli;
private $row,$row1,$row2,$row3,$row4,$row5;
private $count,$count1,$count2,$count3,$count4,$count5;
private $affected_row_sql;
private $affected_row_sp; public function Model_MysqliExt(){
//Check system is nt or linux
if (PHP_OS == 'WINNT'){
$this->mysqli = new mysqli(MY_HOST, MY_USER, MY_PASS, MY_DB, MY_PORT);
}else
{
$this->mysqli = new mysqli(MY_HOST, MY_USER, MY_PASS, MY_DB, MY_PORT,MY_SOCKET);
}
if (mysqli_connect_errno()){
die("Connect failed:".mysqli_connect_error());
}
$this->row = null;
$this->count = 0;
$this->count1 = 0;
$this->count2 = 0;
$this->count3 = 0;
$this->count4 = 0;
$this->count5 = 0; }
//Query sql text public function call_sql($sql){
$this->mysqli->query($sql);
$this->affected_row_sql = $this->mysqli->affected_rows; }
//Query store procedure text
public function ExecuteNoReturnValue($sp_name,$sp_array) {
$sp_parameters = "";
for($i=1;$i<=count($sp_array);$i++)
{
$sp_parameters .= "'".$sp_array[$i]."',";
}
$sp_parameters = substr($sp_parameters,0,strlen($sp_parameters)-1); $sp_sql = " call ".$sp_name." (". $sp_parameters.");";
// echo $sp_sql;
$this->mysqli->query($sp_sql); }
//////////////////////////////////
public function call_sp($query){
$this->mysqli->multi_query($query);
do {
if ($result = $this->mysqli->use_result()){
while ($row = $result->fetch_row()){
$this->row[$this->count++] = $row;
}
$result->close();
}
} while($this->mysqli->next_result());
$this->affected_row_sp = $this->mysqli->affected_rows; }
public function call_sp_ext($query){
$this->mysqli->multi_query($query);
$i = 0 ;
do {
//////////////////////第0个记录集. 默认////////////////////////
if ($i==0)
{
if ($result = $this->mysqli->use_result()){
while ($row = $result->fetch_row()){
$this->row[$this->count++] = $row;
}
$result->close();
}
}
//////////////////////第1个记录集. 假设有的话////////////////////////
if ($i==1)
{
if ($result = $this->mysqli->use_result()){
while ($row = $result->fetch_row()){
$this->row1[$this->count1++] = $row;
}
$result->close();
}
}
//////////////////////第2个记录集. 假设有的话////////////////////////
if ($i==2)
{
if ($result = $this->mysqli->use_result()){
while ($row = $result->fetch_row()){
$this->row2[$this->count2++] = $row;
}
$result->close();
}
}
//////////////////////第3个记录集. 假设有的话////////////////////////
if ($i==3)
{
if ($result = $this->mysqli->use_result()){
while ($row = $result->fetch_row()){
$this->row3[$this->count3++] = $row;
}
$result->close();
}
}
//////////////////////第4个记录集. 假设有的话////////////////////////
if ($i==4)
{
if ($result = $this->mysqli->use_result()){
while ($row = $result->fetch_row()){
$this->row4[$this->count4++] = $row;
}
$result->close();
}
}
//////////////////////第5个记录集. 假设有的话////////////////////////
if ($i==5)
{
if ($result = $this->mysqli->use_result()){
while ($row = $result->fetch_row()){
$this->row5[$this->count5++] = $row;
}
$result->close();
}
}
//////////////////////最大设置有6个记录集供使用////////////////////////
$i = $i + 1;
} while($this->mysqli->next_result());
$this->affected_row_sp = $this->mysqli->affected_rows; }
//Close connection and free memory public function close_sp(){
$this->mysqli->close();
}
//Get query result public function get_rows(){
return $this->row;
}
//////////////////////
public function get_rows1(){
return $this->row1;
}
//////////////////////
public function get_rows2(){
return $this->row2;
}
//////////////////////
public function get_rows3(){
return $this->row3;
}
////////////////////
public function get_rows4(){
return $this->row4;
}
public function get_rows5(){
return $this->row5;
}
//Get rows count public function get_count(){
return $this->count;
}
//Get affected rows public function get_affected_rows($str){
switch ($str){
//Get affected rows from sql text case 'sql':
return $this->affected_row_sql;
break;
//Get affected rows from store procedure text case 'sp':
return $this->affected_row_sp;
break;
default:
return false;
break;
}
}
}
?>调用方法
<?php
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////FLEA::loadClass('Controller_Base');class Controller_TestMultiQuery extends Controller_Base
{
/**
* 构造函数
*
* @return Controller_Default
*/
function Controller_TestMultiQuery() {
parent::Controller_Base();
} /**
* 程序入口的首页
*
* @return null
*/
function actionIndex()
{
FLEA::loadClass('Model_MysqliExt');
$mysqli=&new Model_MysqliExt();
$query = 'call sp_test();';
$mysqli->call_sp_ext($query);
$mysqli->close_sp();
print '<pre>';
print_r($mysqli->get_rows());
print '</pre>'; echo "--------------------<br>";
print '<pre>';
print_r($mysqli->get_rows1());
print '</pre>';
echo "--------------------<br>";
print '<pre>';
print_r($mysqli->get_rows2());
print '</pre>';
}
}
?>这里是使用fleaphp开源框架的方式调用的,有需要地大家可以自行改成一般的就可以了