关于用php调用mysql分页存储过程的例子老是出错?

pdq315 2009-12-24 08:22:33
关于用php调用mysql分页存储过程的例子老是出错?分页的存储过程是正确的,
调用的php代码是这样写的

define('CLIENT_MULTI_RESULTS', 131072);
$mysqli = new mysqli("localhost", "root", "123456", "eimage");
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
if ($result = $mysqli->query("call P_viewPage("scms_product","*","id","id>70","id desc","3","0","3","1",@$TotalCount,@$TotalPageCount)")) {

while($row = $result->fetch_row())
{
echo $row[2]."<br>";
}
}

运行php的时候就会报错
Parse error: syntax error, unexpected T_STRING in D:\wamp\www\test1.php on line 14
提示是这一行出现错误if ($result = $mysqli->query("call P_viewPage("scms_product","*","id","id>70","id desc","3","0","3","1",@$TotalCount,@$TotalPageCount)"))
问下 高手我的问题出现在哪里?非常感谢
...全文
221 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
eros0405 2010-09-19
  • 打赏
  • 举报
回复
哥,你这段代码要是对就怪了,引号都成那样了!
lirongguo1 2010-09-19
  • 打赏
  • 举报
回复
看看,是怎么解决的
pdq315 2009-12-24
  • 打赏
  • 举报
回复
哦 知道了,我看了一个晚上都没看出错误 非常谢谢
阿_布 2009-12-24
  • 打赏
  • 举报
回复
if ($result = $mysqli->query("call P_viewPage('scms_product','*','id','id>70','id desc',3,0,3,1,@$TotalCount,@$TotalPageCount)")) {

ACMAIN_CHM 2009-12-24
  • 打赏
  • 举报
回复
你的PHP语法不对

query("call P_viewPage("scms_product","*","id","id>70","id desc","3","0","3","1",@$TotalCount,@$TotalPageCount)")

你的引号的匹配结果是这样。
pdq315 2009-12-24
  • 打赏
  • 举报
回复
mysql种调用正常,就是php种调用就不正常了
存储过程的代码是

CREATE PROCEDURE `P_viewPage`(
$TableName VARCHAR(200),
$FieldList VARCHAR(2000),
$PrimaryKey VARCHAR(100),
$Where VARCHAR(1000),
$Order VARCHAR(1000),
$SortType INT,
$RecorderCount INT,
$PageSize INT,
$PageIndex INT,
OUT $TotalCount INTEGER,
OUT $TotalPageCount INTEGER
)
BEGIN

IF !(($TableName is null OR $TableName='') OR ($FieldList is null OR $FieldList='') OR ($PrimaryKey is null OR $PrimaryKey='') OR $SortType < 1 OR $SortType >3 OR $RecorderCount < 0 OR $PageSize < 0 OR $PageIndex < 0) THEN

IF ($where is null OR $where='') THEN
SET @new_where1 = ' ' ;
SET @new_where2 = ' WHERE ' ;
ELSE
SET @new_where1 =concat(' WHERE ',$where);
SET @new_where2 =concat(' WHERE ',$where,' AND ');
END IF;

IF $order='' OR $SortType = 1 OR $SortType = 2 THEN
IF $SortType = 1 THEN
SET @new_order =concat(' ORDER BY ',$PrimaryKey,' ASC' );
END IF;
IF $SortType = 2 THEN
SET @new_order =concat(' ORDER BY ',$PrimaryKey,' DESC');
END IF;
ELSE
SET @new_order =concat(' ORDER BY ',$Order);
END IF;

SET @SqlCount = concat('SELECT COUNT(*) into @TotalCount FROM ',$TableName,@new_where1);
SET @SqlCount1 = concat('SELECT CEILING((COUNT(*)+0.0)/',$PageSize,') into @TotalPageCount FROM ',$TableName,@new_where1);
IF $RecorderCount = 0 THEN
PREPARE stmt1 FROM @SqlCount;
EXECUTE stmt1;
set $TotalCount=@TotalCount;
PREPARE stmt1 FROM @SqlCount1;
EXECUTE stmt1;
set $TotalPageCount=@TotalPageCount;
ELSE
set $TotalCount = $RecorderCount;
END IF;

IF $PageIndex > CEILING(($TotalCount+0.0)/$PageSize) THEN
SET $PageIndex = CEILING(($TotalCount+0.0)/$PageSize);
END IF;

IF $PageIndex = 0 or $PageIndex = 1 THEN
SET @Sql=concat('SELECT ',$FieldList,' FROM ',$TableName,@new_where1,@new_order,' limit ',$PageSize);
ELSE
IF $SortType = 1 THEN
SET @Sql=concat('SELECT ',$FieldList,' FROM ',$TableName,@new_where2,$PrimaryKey,' > (SELECT max(',$PrimaryKey,') FROM (SELECT ',$PrimaryKey,' FROM ',$TableName,@new_where1,@new_order,' limit ',$PageSize*($PageIndex-1),' ) AS TMP) ',@new_order,' limit ',$PageSize);
END IF;
IF $SortType = 2 THEN
SET @Sql=concat('SELECT ',$FieldList,' FROM ',$TableName,@new_where2,$PrimaryKey,' < (SELECT MIN(',$PrimaryKey,') FROM (SELECT ',$PrimaryKey,' FROM ',$TableName,@new_where1,@new_order,' limit ',$PageSize*($PageIndex-1),' ) AS TMP) ',@new_order,' limit ',$PageSize);
END IF;
IF $SortType = 3 THEN
IF INSTR($Order,',') > 0 THEN
SET @Sql=concat('SELECT ',$FieldList,' FROM ',$TableName,@new_where2,$PrimaryKey,' NOT IN (SELECT ',$PrimaryKey,' FROM (SELECT ',$PrimaryKey,' FROM ',$TableName,@new_where1,@new_order,' limit ',$PageSize*($PageIndex-1),' ) a)',@new_order,' limit ',$PageSize);
ELSE
SET @new_order =concat(' ORDER BY ',$PrimaryKey,' ASC' );
SET @Sql=concat('SELECT ',$FieldList,' FROM ',$TableName,@new_where2,$PrimaryKey,' > (SELECT max(',$PrimaryKey,') FROM (SELECT ',$PrimaryKey,' FROM ',$TableName,@new_where1,@new_order,' limit ',$PageSize*($PageIndex-1),' ) AS TMP) ',@new_order,' limit ',$PageSize);
END IF;
END IF;
END IF;

Prepare stmt2 from @Sql;
execute stmt2;

END IF;
END ;
wwwwb 2009-12-24
  • 打赏
  • 举报
回复
SP代码是什么,直接在MYSQL中调用是否正常
ACMAIN_CHM 2009-12-24
  • 打赏
  • 举报
回复
你的引号太乱了,整理一下,并且需要加上转义符。

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧