2017-07-29 55 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. –

相关问题