- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经被 MySQL 的 PHP/PDO 问题困扰了几天,我只是不明白为什么它返回一个空数组......
我收到的错误消息如下所示:
Notice: Undefined offset: 0 in /home/saxon/students/20141/jolf14/www/oophp/kmom04/webroot/sqltest3.php on line 24
Notice: Trying to get property of non-object in /home/saxon/students/20141/jolf14/www/oophp/kmom04/webroot/sqltest3.php on line 24
第一类看起来像这样:
<?php
/**
* ctMovies is a class that handles movies and database
*
*/
class ctMovies{
/**
* Constructor
*
*/
public function __construct() {
}
/**
* Use the current querystring as base, modify it according to $options and return the modified query string.
*
* @param array $options to set/change.
* @param string $prepend this to the resulting query string
* @return string with an updated query string.
*/
function getQueryString($options = array(), $prepend = '?') {
// parse query string into array
$query = array();
parse_str($_SERVER['QUERY_STRING'], $query);
// Modify the existing query string with new options
$query = array_merge($query, $options);
// Return the modified querystring
return $prepend . htmlentities(http_build_query($query));
}
/**
* Create links for hits per page.
*
* @param array $hits a list of hits-options to display.
* @param array $current value.
* @return string as a link to this page.
*/
function getHitsPerPage($hits, $current = null) {
$nav = "Träffar per sida: ";
foreach ($hits AS $val) {
if ($current == $val) {
$nav .= "$val ";
} else {
$nav .= "<a href='" . $this->getQueryString(array('hits' => $val)) . "'>$val</a> ";
}
}
return $nav;
}
/**
* Create navigation among pages.
*
* @param integer $hits per page.
* @param integer $page current page.
* @param integer $max number of pages.
* @param integer $min is the first page number, usually 0 or 1.
* @return string as a link to this page.
*/
function getPageNavigation($hits, $page, $max, $min = 1) {
$nav = ($page != $min) ? "<a href='".$this->getQueryString(array('page' => $min))."'><<</a>" : '<<';
$nav .= ($page > $min) ? "<a href='".$this->getQueryString(array('page' => ($page > $min ? $page - 1 : $min)))."'><</a>" : '<';
for ($i = $min; $i <= $max; $i++) {
if ($page == $i) {
$nav .= "$i ";
} else {
$nav .= "<a href='".$this->getQueryString(array('page' => $i)) ."'>$i</a> ";
}
}
$nav .= ($page < $max) ? "<a href='".$this->getQueryString(array('page' => ($page < $max ? $page + 1 : $max)))."'>></a>" : '>';
$nav .= ($page != $max) ? "<a href='".$this->getQueryString(array('page' => $max))."'>>></a> " : '>> ';
return $nav;
}
/**
* Function to create links for sorting
*
* @param string $column the name of the database column to sort by
* @return string with links to order by column.
*/
function orderby($column) {
$nav = "<a href='" . $this->getQueryString(array('orderby' => $column, 'order' => 'asc')) . "'>↓</a>";
$nav .= "<a href='" . $this->getQueryString(array('orderby' => $column, 'order' => 'desc')) . "'>↑</a>";
return "<span class='orderby'>" .$nav . "</span>";
}
}
第二个类扩展了第一个类,如下所示:
<?php
/**
* cMovies is a class that handles movies and database
*
*/
class cMovies extends ctMovies {
/**
* Properties
*
*/
private $db;
private $sqlOrig;
private $where;
private $groupby;
private $params;
/**
* Constructor
*
*/
public function __construct($db) {
parent::__construct();
$this->db=$db;
}
/**
* Function to get movie table
*
*/
function getTable(){
// Get parameters
$title = htmlentities(isset($_GET['title']) ? $_GET['title'] : null);
$title= str_replace('*', '%', $title);
$hits = isset($_GET['hits']) ? $_GET['hits'] : 8;
$page = isset($_GET['page']) ? $_GET['page'] : 1;
$year1 = isset($_GET['year1']) && !empty($_GET['year1']) ? $_GET['year1'] : null;
$year2 = isset($_GET['year2']) && !empty($_GET['year2']) ? $_GET['year2'] : null;
$orderby = isset($_GET['orderby']) ? strtolower($_GET['orderby']) : 'id';
$order = isset($_GET['order']) ? strtolower($_GET['order']) : 'asc';
// Check that incoming parameters are valid
is_numeric($hits) or die('Check: Hits must be numeric.');
is_numeric($page) or die('Check: Page must be numeric.');
is_numeric($year1) || !isset($year1) or die('Check: Year must be numeric or not set.');
is_numeric($year2) || !isset($year2) or die('Check: Year must be numeric or not set.');
// Prepare the query based on incoming arguments
$this->sqlOrig = '
SELECT
M.*,
GROUP_CONCAT(G.name) AS genre
FROM Movie AS M
LEFT OUTER JOIN Movie2Genre AS M2G
ON M.id = M2G.idMovie
INNER JOIN Genre AS G
ON M2G.idGenre = G.id
';
$this->where = null;
$this->groupby = ' GROUP BY M.id';
$limit = null;
$sort = " ORDER BY $orderby $order";
$this->params= array();
// Select by title
if ($title) {
$this->where .= ' AND title LIKE ?';
$this->params[] = $title;
}
// Select by year
if ($year1) {
$this->where .= ' AND year >= ?';
$this->params[] = $year1;
}
if ($year2) {
$this->where .= ' AND year <= ?';
$this->params[] = $year2;
}
// Pagination
if ($hits && $page) {
$limit = " LIMIT $hits OFFSET " . (($page - 1) * $hits);
}
// Complete the sql statement
$this->where = $this->where ? "WHERE 1 {$this->where}" : null;
$sql = $this->sqlOrig . $this->where . $this->groupby . $sort . $limit;
$res = $this->db->ExecuteSelectQueryAndFetchAll($sql, $this->params);
//// Put results into a HTML-table
$tr = "<tr><th>Rad</th><th>Id " . $this->orderby('id') . "</th><th>Bild</th><th>Titel " . $this->orderby('title') . "</th><th>År " . $this->orderby('year') . "</th><th>Genre</th></tr>";
foreach ($res AS $key => $val) {
$tr .= "<tr><td>{$key}</td><td>{$val->id}</td><td><img width='80' height='40' src='{$val->image}' alt='{$val->title}' /></td><td>{$val->title}</td><td>{$val->YEAR}</td><td>{$val->genre}</td></tr>";
}
return $tr;
}
/**
* Function to get a result which can be used to calculate maximal number
* of pages.
*/
function getResMaxPages() {
//// Get max pages for current query, for navigation
$sql = 'SELECT COUNT(id) AS rows FROM ($this->sqlOrig $this->where $this->groupby) AS Movie';
echo "$this->sqlOrig";
echo "$this->where";
echo "$this->groupby";
$res = $this->db->ExecuteSelectQueryAndFetchAll($sql, $this->params);
return $res;
}
}
这一切都是由这个小家伙经营的:
<?php
/**
* This is a joax pagecontroller.
* It handles movie information from a database
*/
// Include the essential config-file which also creates the $joax variable with its defaults.
include(__DIR__ . '/config.php');
$joax['stylesheets'][] = 'css/table.css';
// Connect to a MySQL database using PHP PDO
$db = new cDatabase($joax['database']);
$movies = new cMovies($db);
$tr=$movies->getTable();
$hits = isset($_GET['hits']) ? $_GET['hits'] : 8;
$page = isset($_GET['page']) ? $_GET['page'] : 1;
$title = htmlentities(isset($_GET['title']) ? $_GET['title'] : null);
$year1 = isset($_GET['year1']) && !empty($_GET['year1']) ? $_GET['year1'] : null;
$year2 = isset($_GET['year2']) && !empty($_GET['year2']) ? $_GET['year2'] : null;
$res=$movies->getResMaxPages();
$rows = $res[0]->rows;
$max = ceil($rows / $hits);
// Do it and store it all in variables in the joax container.
$joax['title'] = "Visa filmer med olika sökalternativ";
$hitsPerPage = $movies->getHitsPerPage(array(2, 4, 8), $hits);
$navigatePage = $movies->getPageNavigation($hits, $page, $max);
//$sqlDebug = $db->Dump();
$joax['main'] = <<<EOD
<h1>{$joax['title']}</h1>
<form>
<fieldset>
<legend>Sök</legend>
<input type=hidden name=hits value='{$hits}'/>
<input type=hidden name=page value='1'/>
<p><label>Titel (delsträng, använd * eller % ): <input type='search' name='title' value='{$title}'/></label></p>
<p><label>Skapad mellan åren:
<input type='text' name='year1' value='{$year1}'/></label>
-
<input type='text' name='year2' value='{$year2}'/>
</p>
<p><input type='submit' name='submit' value='Sök'/></p>
<p><a href='?'>Visa alla</a></p>
</fieldset>
</form>
<div>
<div>{$rows} träffar. {$hitsPerPage}</div>
<table>
{$tr}
</table>
<div class='center'>{$navigatePage}</div>
</div>
EOD;
// Finally, leave it all to the rendering phase of joax.
include(JOAX_THEME_PATH);
我还有一个类来处理数据库,但它工作正常,我也可以发布它,但我没有从中得到任何错误,并且可以从数据库加载文件。
最佳答案
undefined offset :0 表示您引用的数组键不存在。尝试获取非对象的属性支持这一点,并且在 sqltest3.php 的第 24 行引用它之前,您可能无法正确实例化对象,如果您不发布代码,我无法真正帮助您对于该文件。在引用对象之前,您可能需要执行类似的操作:
$some_variable = new whatever_class_is_on_line_24_of_sqltest3_dot_php();
关于PHP、MySQL查询返回空数组,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22430848/
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
在编码时,我问了自己这个问题: 这样更快吗: if(false) return true; else return false; 比这个? if(false) return true; return
如何在逻辑条件下进行“返回”? 在这样的情况下这会很有用 checkConfig() || return false; var iNeedThis=doSomething() || return fa
这是我的正则表达式 demo 如问题所述: 如果第一个数字是 1 则返回 1 但如果是 145 则返回 145 但如果是 133 则返回 133 样本数据a: K'8134567 K'81345678
在代码高尔夫问答部分查看谜题和答案时,我遇到了 this solution返回 1 的最长和最晦涩的方法 引用答案, int foo(void) { return! 0; } int bar(
我想在下面返回 JSON。 { "name": "jackie" } postman 给我错误。说明 Unexpected 'n' 这里是 Spring Boot 的新手。 1日龄。有没有正确的方法来
只要“is”返回 True,“==”不应该返回 True 吗? In [101]: np.NAN is np.nan is np.NaN Out[101]: True In [102]: np.NAN
我需要获取所有在 6 号或 7 号房间或根本不在任何房间的学生的详细信息。如果他们在其他房间,简单地说,我不希望有那个记录。 我的架构是: students(roll_no, name,class,.
我有一个表单,我将它发送到 php 以通过 ajax 插入到 mysql 数据库中。一切顺利,php 返回 "true" 值,但在 ajax 中它显示 false 消息。 在这里你可以查看php代码:
我在 Kotlin 中遇到了一个非常奇怪的无法解释的值比较问题,以下代码打印 假 data class Foo ( val a: Byte ) fun main() { val NUM
请注意,这并非特定于 Protractor。问题在于 Angular 2 的内置 Testability service Protractor 碰巧使用。 Protractor 调用 Testabil
在调试窗口中,以下表达式均返回 1。 Application.WorksheetFunction.CountA(Cells(4 + (i - 1) * rows_per_record, 28) & "
我在本地使用 jsonplaceholder ( http://jsonplaceholder.typicode.com/)。我正在通过 extjs rest 代理测试我的 GET 和 POST 调用
这是 Postman 为成功调用我的页面而提供的(修改后的)代码段。 var client = new RestClient("http://sub.example.com/wp-json/wp/v2
这个问题在这里已经有了答案: What to do with mysqli problems? Errors like mysqli_fetch_array(): Argument #1 must
我想我对 C 命令行参数有点生疏。我查看了我的一些旧代码,但无论这个版本是什么,都会出现段错误。 运行方式是 ./foo -n num(其中 num 是用户在命令行中输入的数字) 但不知何故它不起作用
我已经编写了一个类来处理命名管道连接,如果我创建了一个实例,关闭它,然后尝试创建另一个实例,调用 CreateFile() 返回 INVALID_HANDLE_VALUE,并且 GetLastErro
即使 is_writable() 返回 true,我也无法写入文件。当然,该文件存在并且显然是可读的。这是代码: $file = "data"; echo file_get_contents($fil
下面代码中的变量 $response 为 NULL,尽管它应该是 SOAP 请求的值。 (潮汐列表)。当我调用 $client->__getLastResponse() 时,我从 SOAP 服务获得了
我一直在网上的不同论坛上搜索答案,但似乎没有与我的情况相符的... 我正在使用 Windows 7,VS2010。 我有一个使用定时器来调用任务栏刷新功能的应用程序。在该任务栏函数中包含对 LoadI
我是一名优秀的程序员,十分优秀!