小编TMo*_*gan的帖子

Php mysqi bind_param变量数与预准备语句中的参数数量不匹配

这必须是一个新手的错误,但我没有看到它.以下是我的代码中的代码段:

$mysqli = mysqli_connect($dbCredentials['hostname'], 
    $dbCredentials['username'], $dbCredentials['password'], 
    $dbCredentials['database']);

if ($mysqli->connect_error) {
    throw new exception( 'Connect Error (' . $mysqli->connect_errno . ') '
    . $mysqli->connect_error);
}

$stmt = $mysqli->prepare("SELECT DISTINCT model FROM vehicle_types 
    WHERE year = ? AND make = '?' ORDER by model");

$stmt->bind_param('is', $year, $make);

$stmt->execute();
Run Code Online (Sandbox Code Playgroud)

当我回显$ year和$ make的值时,我看到了值,但是当我运行这个脚本时,我得到一个空值,并且我的日志文件中出现以下警告:

PHP Warning:  mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement
Run Code Online (Sandbox Code Playgroud)

在这种情况下,year在数据库中的类型为int(10),并且我已经尝试传递一个已经转换为int的副本,而make是一个带有utf8_unicode_ci编码的varchar(20).我错过了什么吗?

php mysqli prepared-statement

28
推荐指数
1
解决办法
3万
查看次数

将 SQL 查询计算出的字段添加到 Yii2 ActiveRecord 模型中

我正在编写代码以返回位于指定区域内并接近某个纬度和经度的位置列表。数据库布局是有一个包含企业的 Location 表、一个定义区域的 Region 表(UrlName 是标识区域的 slug),以及一个 regionLocation 表,将区域映射到位置。

SQL 查询非常繁琐,但它计算了一个名为“距离”的虚拟列,我希望在返回的模型中可以访问该列。

这是出现在我的位置模型中的代码的缩短版本:

        public static function getByRegionAndLatLong( $regionName, $lat, $long ) {

        $sql = "SELECT
            `Location`.`LocationId`,
            `Location`.`Latitude`,
            `Location`.`Longitude`,
                    (
                    3959 * acos (
                    cos ( radians( :Latitude ) )
                    * cos( radians( latitude ) )
                    * cos( radians( longitude ) - radians( :Longitude ) )
                    + sin ( radians( :Latitude ) )
                    * sin( radians( latitude ) )
                    )
                  ) AS Distance
                FROM Location
                    LEFT JOIN RegionLocation RL
                    ON RL.LocationId = …
Run Code Online (Sandbox Code Playgroud)

yii2 yii2-model

6
推荐指数
1
解决办法
2915
查看次数

如何使用/ web以外的Web根部署yii2

我正在研究yii2项目,并希望将其部署到apache服务器,其中整个网站都应该位于/ public_html目录中,并且/ public_html是该主机的Web根目录。问题在于yii2期望Web根目录为/ web,并且期望大多数站点层次结构都位于/ web目录之外。

我希望不必将webroot更改为/ public_html / web,对于将来的项目,这可能不是一个选择。因此,有没有办法将整个网站层次结构放置在/ public_html中,并且仍然使网站正常工作?

我尝试创建具有以下内容的/public_html/.htaccess文件:

    RewriteEngine on
    RewriteCond %{REQUEST_URI} !web/
    RewriteRule (.*) /web/$1 [L]
Run Code Online (Sandbox Code Playgroud)

首先,这似乎正常工作。/ public_html / web之外的任何内容都无法访问,并且/ web子目录中的文件(例如/web/js/signup.js)可以通过url http://localhost/js/signup.js进行访问,但这引起了我的路由规则(是在本地系统上设置的,我可以将Web根目录指向/ web)不再被识别。

因此,我可以选择.htaccess路由的替代方案,或者对如何修改路由规则以使.htaccess路由起作用的建议感到满意。

编辑澄清

我有一个托管提供商,其网络根为〜/ public_html。Yii有文档说明您可以将www重命名为public_html,并将通常位于/ www之外的所有内容放在〜中,以及Linux通常放置在〜中的各种点文件和用户文档。我希望将所有与站点相关的目录放在一起(在webroot下)。

或者,可以使用两目录结构,例如以下结构:

~/
 |--- (Various dotfiles and subdirectories unrelated to the web site)
 |--- yii - Contains all subfolders that should be outside of the web root
      |--- commands
      |--- config
      |--- controllers 
      |--- (etc...)
 |--- public_html - Contains everything that can be within the web root.
      |--- …
Run Code Online (Sandbox Code Playgroud)

php .htaccess yii2 yii-url-manager

5
推荐指数
1
解决办法
3839
查看次数