2017-07-29 169 views
1
$cq = "SELECT * FROM salescard WHERE custid = '$custid'"; 
$rq = mysqli_query($conn,$cq); 
if ($c = mysqli_fetch_array($rq, MYSQLI_ASSOC)) { 

$edate =$c['expdate']; 
$ono = $c['orderno']; 
$cno = $c['cardno']; 
$c = $c['cvv']; 
$email = $c['email']; 
$no = $c['no']; 

} 

我從表中提取數據並回顯上面提到的變量。獲取非法字符串偏移量在獲取數據時發生警告

所有的變量都得到正確迴應期望$ email和$ no。

Warning: Illegal string offset 'email' in 
C:\xampp\htdocs\erp\admin\viewsales\card.php on line 94 

Warning: Illegal string offset 'no' in 
C:\xampp\htdocs\erp\admin\viewsales\card.php on line 95 

我所知道的是,這個警告與變量被定義在數組預期的地方有關。

只有兩個變量顯示錯誤,其餘的正在提取 我該如何使這項工作正常?

編輯

我當然有我的salescard表這兩列,我能夠將數據存儲到它的另一種形式。

$email = $c['email']; 
$no = $c['no']; 

這些都是線94和95

,我想在這裏顯示的數據

<div class="form-group half left clear"> 
    <input type="text" value="<?php echo $email;?>" name="email" /> 
    <label class="control-label" for="input">Email Address</label><i 
class="bar"></i> 
</div> 

<div class="form-group half right"> 
    <input type="text" value="<?php echo $no;?>" name="no" /> 
    <label class="control-label" for="input">Contact number</label><i 
class="bar"></i>  
</div> 
+1

你有你'salescard'表'電子郵件,no'列?另外,在你使用這些變量的地方,你可以顯示代碼(比如94,95行)? –

回答

3

您覆蓋$ C的線93,並使它成爲一個字符串。

$c = $c['cvv']; 

應該是:

$cvv = $c['cvv']; 
+0

這也強調了具有**有意義的變量名稱的重要性。 '$ array'或'$ data'可以比'$ c'更適合。 – webnoob

+0

該死的!這些小錯誤真的讓我花了一些時間......用短變量名保存時間確實起了反作用..無論如何感謝:) – Arun

+0

@Arun它是相當可怕的,你似乎正在處理信用卡數據的代碼,看起來像'... WHERE對於所有的實際目的而言,對SQL查詢的變量插值是絕對不可接受的,這個代碼似乎很容易受到SQL注入的影響,如果你從書中學到了這些,你應該把書設置爲fire. –

相關問題