Sql 使用 "LIMIT" 时出错。
Sql error while using "LIMIT".
我在使用下面的 SQL 查询时遇到错误“Undeclared variable: $start
”。
<?php
if($Spage == ""){
$Spage = "1";
}
$Sper_page = "5";
$start = ($Spage-1)*$Sper_page;
$sResults = $oCon->dbFetchSmarty("SELECT * FROM experts WHERE exp_process LIKE '%".$process."%' AND exp_machinaries like '%".$machineCat."%' AND exp_country = '". $country."' 'LIMIT $start, $Sper_page'");
?>
试试这个:(另一种设置限制和偏移的方法)
<?php
if($Spage == ""){
$Spage = "1";
}
$Sper_page = "5";
$start = ($Spage-1)*$Sper_page;
$sResults = $oCon->dbFetchSmarty("SELECT * FROM experts WHERE exp_process LIKE '%".$process."%' AND exp_machinaries like '%".$machineCat."%' AND exp_country = '". $country."'LIMIT $per_page OFFSET $start'");
?>
顺便说一句,您错放了 LIMIT 附近的单引号。
你弄乱了你的单引号。应该是
$sResults = $oCon->dbFetchSmarty("SELECT * FROM experts WHERE exp_process LIKE '%".$process."%' AND exp_machinaries like '%".$machineCat."%' AND exp_country = '". $country."' LIMIT $start, $Sper_page");
稍微清理一下查询:
$sResults = $oCon->dbFetchSmarty("SELECT * FROM experts WHERE exp_process LIKE '%$process%' AND exp_machinaries like '%$machineCat%' AND exp_country = '$country' LIMIT $start, $Sper_page");
删除的下一步是使用准备好的语句并将这些参数绑定到
您在 LIMIT 和 '. 之间遗漏了一个 space。
一定是
$country."' ' LIMIT . ........
您使查询的创建过于复杂,因此遗漏了一些简单的错误。请记住,当您在 PHP 中使用双引号 "
时,它会为您将 $variables
扩展为字符串。
因此,更简单易读的调试方法就是这个
$sql = "SELECT * FROM experts
WHERE exp_process LIKE '%$process%'
AND exp_machinaries like '%$machineCat%'
AND exp_country = '$country'
LIMIT $start, $Sper_page";
$sResults = $oCon->dbFetchSmarty($sql);
检查查询的最佳解决方案是在 phpmyadmin 中。您只需将查询和 copy/past 查询部分回显到 phpmyadmin 中。因此它将为您的查询结构或任何错误提供正确的指导。
我在使用下面的 SQL 查询时遇到错误“Undeclared variable: $start
”。
<?php
if($Spage == ""){
$Spage = "1";
}
$Sper_page = "5";
$start = ($Spage-1)*$Sper_page;
$sResults = $oCon->dbFetchSmarty("SELECT * FROM experts WHERE exp_process LIKE '%".$process."%' AND exp_machinaries like '%".$machineCat."%' AND exp_country = '". $country."' 'LIMIT $start, $Sper_page'");
?>
试试这个:(另一种设置限制和偏移的方法)
<?php
if($Spage == ""){
$Spage = "1";
}
$Sper_page = "5";
$start = ($Spage-1)*$Sper_page;
$sResults = $oCon->dbFetchSmarty("SELECT * FROM experts WHERE exp_process LIKE '%".$process."%' AND exp_machinaries like '%".$machineCat."%' AND exp_country = '". $country."'LIMIT $per_page OFFSET $start'");
?>
顺便说一句,您错放了 LIMIT 附近的单引号。
你弄乱了你的单引号。应该是
$sResults = $oCon->dbFetchSmarty("SELECT * FROM experts WHERE exp_process LIKE '%".$process."%' AND exp_machinaries like '%".$machineCat."%' AND exp_country = '". $country."' LIMIT $start, $Sper_page");
稍微清理一下查询:
$sResults = $oCon->dbFetchSmarty("SELECT * FROM experts WHERE exp_process LIKE '%$process%' AND exp_machinaries like '%$machineCat%' AND exp_country = '$country' LIMIT $start, $Sper_page");
删除的下一步是使用准备好的语句并将这些参数绑定到
您在 LIMIT 和 '. 之间遗漏了一个 space。 一定是
$country."' ' LIMIT . ........
您使查询的创建过于复杂,因此遗漏了一些简单的错误。请记住,当您在 PHP 中使用双引号 "
时,它会为您将 $variables
扩展为字符串。
因此,更简单易读的调试方法就是这个
$sql = "SELECT * FROM experts
WHERE exp_process LIKE '%$process%'
AND exp_machinaries like '%$machineCat%'
AND exp_country = '$country'
LIMIT $start, $Sper_page";
$sResults = $oCon->dbFetchSmarty($sql);
检查查询的最佳解决方案是在 phpmyadmin 中。您只需将查询和 copy/past 查询部分回显到 phpmyadmin 中。因此它将为您的查询结构或任何错误提供正确的指导。