问题描述
我正在使用准备好的语句(从PHPmyadmin中进行测试)使用特定值等从MysqL数据库中检索一行。
我使用Object.defineproperty()
在页面的第400行和第900行再次显示它(这是实际的复制粘贴)。第一个实例显示预期的结果,第二个实例引发错误:
function partition(array,filter) {
let pass = [],fail = [];
array.forEach((e,idx,arr) => (filter(e,arr) ? pass : fail).push(e));
return [pass,fail];
}
function unDefineProperties(obj,propertyDescriptors) {
const [normalDescriptors,tobedeletedDescriptors] =
partition(Object.entries(propertyDescriptors),([_,descriptor]) => descriptor);
Object.defineProperties(obj,Object.fromEntries(normalDescriptors));
tobedeletedDescriptors.forEach(([name,_]) => delete obj[name]);
return obj;
}
// Usage example:
const obj = { a: 'A',b: 'B',c: 'C'};
unDefineProperties(obj,{
a: null,c: null,d: { value: "D",enumerable: true }
});
console.log(obj); // logs { "b": "B","d": "D" }
那怎么可能?我已经检查过,<?PHP echo (htmlspecialchars($row_Feed->f_text)); ?>
变量在两者之间的其他地方没有被重用,并且在同一文件的前两行中可以正常工作。唯一的事情是,第一个实例在此循环Uncaught Customizable_Exception: Trying to get property 'f_text' of non-object in C:\xampp\htdocs\bbto.eu\index.PHP:878
中,而另一个实例在它关闭后,但是由于什么时候会产生影响?
最小可复制示例:
$row_Feed
我在第二次回声中遇到错误。
解决方法
唯一的是,第一个实例在此循环中while($ row_feed = $ feed-> fetch_object()){}而另一个在关闭之后,但是从什么时候开始有影响?
对查询结果进行while循环的基本原理是,fetch
调用将在没有更多记录要处理时返回NULL,这就是使循环在此时终止的原因然后。因此,当然,在循环之后,$row_feed
为NULL。
如何重用$ row_feed的最后一个值
将其存储到另一个变量 inside while循环中:$last_row = $row_feed;
。这将在每次循环迭代中被覆盖,因此只有最后一个值将在循环之后“保留”。由于它位于循环 中,因此$row_feed = $feed->fetch_object()
导致NULL时,该行将不再执行。
while ($row_feed = $feed->fetch_object()) {
echo htmlspecialchars($row_feed->f_text);
$last_row = $row_feed;
}
### other stuff going on
echo htmlspecialchars($last_row);