Php 如何在mysqli prepared语句中打印获取的值?
我的html表单:Php 如何在mysqli prepared语句中打印获取的值?,php,mysqli,prepared-statement,Php,Mysqli,Prepared Statement,我的html表单: <form action="" method="post" > <tr> <td><select name="bs_edu"> <option value="" selected="selected">Select Basic Education</option> <option value="BA">B.A</option> <option value="BARC
<form action="" method="post" >
<tr>
<td><select name="bs_edu">
<option value="" selected="selected">Select Basic Education</option>
<option value="BA">B.A</option>
<option value="BARCH">B.ARCH</option>
<option value="BCA">BCA</option>
<option value="BBA">BBA</option>
</select>
<td><input type="text" name="desg"/> </td>
<td><input type="email" name="email"/></td>
</tr>
</form>
选择基础教育
文学学士
拱门
BCA
工商管理学士
我的问题是:
<?php
$stmt = $con->prepare("SELECT * FROM user_tbl WHERE bs_edu = ? AND desg = ? AND exp = ? AND pr_sal = ? AND plc = ? AND email = ? ");
$stmt->bind_param('ssssss', $_POST['bs_edu'], $_POST['desg'], $_POST['exp'], $_POST['prsal'], $_POST['place'], $_POST['email']);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows > "0")
{
while($row = $result->fetch_assoc());
{
echo 'first name: ' .$row['fname'];
}
}
$stmt->close();
?>
我知道这是错误的数据显示方式。阅读本手册n如果真的运气不好,请说明如何显示获取的数据。。有什么帮助吗。。谢谢下面的分号使循环停止,它是语句结束字符
while($row = $result->fetch_assoc());
^ end of statement
将其移除。
while($row = $result->fetch_assoc())
因为它被认为是有效的语法,所以不会出现错误
此外,带引号的零被解释为字符串,因此需要删除它
if ($result->num_rows > 0)
旁注关于get_result()
手册规定:
仅限MySQL本机驱动程序
仅适用于
从这个答案中得出的例子
补充说明
不能是
的孩子,因为我怀疑您可能有
标记隐藏在您未显示的代码中的某个地方
您也没有与POST数组匹配的表单元素
在打开PHP标记后立即将错误报告添加到文件顶部
例如下面的分号使循环停止,是语句结束字符
while($row = $result->fetch_assoc());
^ end of statement
将其移除。
while($row = $result->fetch_assoc())
因为它被认为是有效的语法,所以不会出现错误
此外,带引号的零被解释为字符串,因此需要删除它
if ($result->num_rows > 0)
旁注关于get_result()
手册规定:
仅限MySQL本机驱动程序
仅适用于
从这个答案中得出的例子
补充说明
不能是
的孩子,因为我怀疑您可能有
标记隐藏在您未显示的代码中的某个地方
您也没有与POST数组匹配的表单元素
在打开PHP标记后立即将错误报告添加到文件顶部
例如
为什么你认为这是错误的?因为我认为这不是正确的方法,我不会从中得到任何结果问题是;在while循环之后;表单中还缺少两个表单字段($_POST['exp']、$_POST['prsal'])@itzmukeshy7您正在将OP的“代码”从if($result->num_rows>“0”)
修改为if($result->num_rows){
,为什么?请不要这样做!您不应该修改“代码”。我拒绝了编辑。如果它通过了,我会回滚它。你为什么认为它错了?bcz我不认为这是正确的方法,因为我不会从这一次中得到任何结果。问题是;在while循环之后;两个表单字段($\u POST['exp'],$\u POST['prsal'])在表单中也丢失;@itzmukeshy7你正在修改OP的“代码”这里从if($result->num_rows>“0”)
到if($result->num_rows){
,为什么?请不要这样做!你不应该修改“code”。我拒绝了编辑。如果它通过,我将回滚到它。但我没有得到任何输出。我删除了半成品colon@StillLearningget_result()
正如我在回答中所说的,我的回答只是一个MySQL本机驱动程序,您可能没有在您的服务器上安装它。这个回答是另一种选择(参见第二种方法)。@StillLearning您也看到了删除的引号if($result->num_rows>0)
对吗?@StillLearning Ok…嗯,您的HTML表单没有POST数组的名称属性,因此我不知道您打算在哪里使用这些属性。请使用错误报告并检查添加到我的answer@StillLearning重新加载我的答案,因为我已经做了一些编辑。另请参见“编辑:其中有另一个稍微不同的我”方法。我还添加了检查错误的方法,因此您需要检查是否存在错误,如所述,可能缺少表单元素/名称属性,
不能是“子项”在你的问题中,这是我能做的最好的了。但是我没有得到任何输出。我删除了半成品colon@StillLearningget_result()@StillLearning您也看到了删除的引号if($result->num\u rows>0)
对吗?@StillLearning Ok…嗯,您的HTML表单没有POST数组的名称属性,因此我不知道您打算在哪里使用这些属性。请使用错误报告并检查添加到我的answer@StillLearning重新加载我的答案,因为我已经做了一些编辑。另请参见“编辑:其中有另一个稍微不同的我”方法。我还添加了检查错误的方法,因此您需要检查是否存在错误,如所述,可能缺少表单元素/名称属性,
不能是
的“子项”,并且在您的问题中未显示。这是我在这里能做的最好的事情。
$stmt = $con->prepare("SELECT * FROM user_tbl ... ");
$result = $stmt->execute();
$stmt->store_result();
if ($stmt->num_rows > 1) {
while($row = $result->fetch_assoc()){
echo 'First name: ' .$row['fname'];
}
}else{
echo "0 records found";
}