2013-03-15 57 views
0

我有这样的代码在目的在数据库中进行搜索:mysqli的编制声明绑定结果和循环

$key = '%'.$_GET['key'].'%'; 
$result= $db->prepare("SELECT * FROM information WHERE stuId LIKE ? 
              OR stuName LIKE ? LIMIT ?,10"); 
$result->bind_param('ssi',$key,$key,$startpage); 
$result->execute(); 
$result->bind_result($stuId,$stuName,$date,$stuSex,$stuAdd); 
while($result->fetch()) { 
    $stuDoB= $date->format('d/m/Y'); 
    echo "<tr> 
       <td class='col1'> 
        <div>$stuId</div> 
       </td> 
       <td> 
        <div><a href='editStudent.php?stuId=$stuId'>" . htmlspecialchars($stuName) . "</a></div> 
       </td> 
       <td class='col3'> 
       <div>$stuDoB</div> 
       </td> 
       <td class='col4'> 
       <div>$stuSex</div> 
       </td> 
       <td class='col5'> 
       <div>" . htmlspecialchars($stuAdd) . "</div> 
       </td> 
      </tr>"; 
} 

我试着去学习准备好的声明,所以我从正常方式改变上面的代码 你能告诉我:

  • 我必须在$result->fetch()或仅有1时bind_result()外循环内bind_result?
  • 我的代码有问题吗?它总是给一个空行,结果与任何$键和一个致命的错误: Fatal error: Call to a member function format() on a non-object in D:\xampp\htdocs\baiTapLon\showPage.php on line 30

线30 $stuDoB= $date->format('d/m/Y');

请帮助我。

+0

这里只有3?在你的准备中,但是你要通过4个增值税。也是$ key是一个字符串,因此即使在准备好的语句中,我也应该将其包装在'sql语句内'(尽管不是100%), – Dave 2013-03-15 11:22:18

回答

0
  • 是否必须在$ result-> fetch()内部绑定结果或在循环外绑定一次bind_result()?

你必须使用bind_result一旦意味着环

  • 有我的代码什么问题么?它总是给任何$键和致命错误的空行结果: “致命错误:调用第30行D:\ xampp \ htdocs \ baiTapLon \ showPage.php中的非对象上的成员函数格式() “

您不能使用格式的任何变量使用这样

$date1 = new DateTime($date); 
$stuDoB= $date1->format('d/m/Y');