我们说我有search.php和edit.php。 在search.php中,他们可以删除和更新一些记录。 如果用户点击了"更新"按钮,系统会将用户重定向到另一个名为edit.php的页面。 我成功调用了itemid。 但这发生了......
<?php
$itemid = $_GET["itemid"];
$description = "";
$classification = "";
$unit = "";
$quantity = "";
$price = "";
$reorder = "";
$status ="";
$record = MYDB::query(
"select
*
from
item
where
itemid = ? ",
array($itemid),
"SELECT"
);
if(count($record) > 0)
{
$record = $record[0];
$description = $description['description'];
$classification = $classification['classification'];
$unit = $unit['unit'];
$quantity = $quantity['quantity'];
$price = $price['price'];
$reorder = $reorder['reorder'];
$status = $status['status'];
}
else
{
echo '<div class="fail">';
echo '<b>FAIL!</b> Item Not Found!</div>';
die();
}
if(isset($_POST["btnsubmit"]))
{
if(isset($_POST["description"])){
$description=ucwords(trim($_POST["description"]));
}
else{
echo "Please Enter description";
}
if(isset($_POST["classification"])){
$classification=ucwords(trim($_POST["classification"]));
}
else{
echo "Please Enter classification";
}
if(isset($_POST["unit"])){
$unit=ucwords(trim($_POST["unit"]));
}
else{
echo "Please Enter unit";
}
if(isset($_POST["quantity"])){
$quantity=ucwords(trim($_POST["quantity"]));
}
else{
echo "Please Enter quantity";
}
if(isset($_POST["price"])){
$price=ucwords(trim($_POST["price"]));
}
else{
echo "Please Enter Price";
}
if(isset($_POST["reorder"])){
$reorder=ucwords(trim($_POST["reorder"]));
}
else{
echo "Please Enter reorder";
}
if(isset($_POST["status"])){
$status=ucwords(trim($_POST["status"]));
}
else{
echo "Please Enter status";
}
}
?>
这是错误,
警告:非法字符串偏移
注意:未初始化的字符串偏移量:0
答案 0 :(得分:1)
这看起来像罪魁祸首
$record = $record[0];
您无法将变量设置为none数组,而其自身将成为具有未初始化值的数组。那只是疯狂的谈话...... :)
你认为你想用这条线做什么?
假设$ record [0]存在并且它有某种id,你可以做......
$record_id = $record[0];
但是你正在为所有其他项目使用关联数组,那么0的索引在哪里进入图片......
您需要执行$ record的var_dump来检查您是否达到了预期效果。
答案 1 :(得分:1)
该错误基本上意味着您通过不存在的键调用数组。我会告诉你哪个键,但你没有提供具体的变量。
说我有这个数组:
$array = ('some_real_key' => 'a very important value');
现在,如果我调用此$array['some_fake_key']
,假设我们的数组没有some_fake_key
,那么它将产生您看到的错误。同样适合您的0 offset
。
您在代码中调用它:
$record = $record[0];
这意味着没有0
偏移量,这可能意味着一系列事情......再次提供的数据不足。但它将遵循上述相同的例子。
要解决这些问题,您可以使用array_key_exists()
:
if ( array_key_exists( 'some_real_key', $array )
{
echo $array['some_real_key'];
}
else if ( array_key_exists( 'some_fake_key', $array )
{
echo $array['some_fake_key'];
}
这将仅输出第一个数组键;并且不会输出任何错误。
考虑到这一点,我认为您的错误可能来自您的变量,如下所示:
$record = $record[0];
$description = $description['description'];
$classification = $classification['classification'];
$unit = $unit['unit'];
$quantity = $quantity['quantity'];
$price = $price['price'];
$reorder = $reorder['reorder'];
$status = $status['status'];
你不是来自阵列的setting
他们;您可能想要拨打$record['key']
而不是$description = $description['description'];
例如,这看起来像:
$description = $record['description'];
// ... so on ...