2014-01-29 272 views
0

我创建了一个简单的PHP页面,它从POST请求中检索数据并将其保存在MYSQL数据库中。数据以正确的方式插入。现在,我想执行Select查询来从表中检索数据并将其显示在UI表中。 问题是Select语句给出了一个错误MySql Select查询返回错误结果

这是错误

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\abhideep_test_project\welcome.php on line 48 

这是PHP代码

<html> 
<body> 

<?php $name = $_POST["name"]; 
$email = $_POST["email"]; 
$mobile = $_POST["mobile"]; 
$address = $_POST["address"]; 
//=============Data Insertion================= 

// Create connection 
$con=mysqli_connect("localhost","root","","employee_db"); 

// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 
/*mysqli_query($con,"INSERT INTO employee_details (employee_name, employee_email, employee_mobile, employee_address) 
VALUES ('Glenn', '[email protected]','9830098300','2/A, Work Lane')");*/ 

mysqli_query($con,"INSERT INTO employee_details (employee_name, employee_email, employee_mobile, employee_address) 
VALUES ('$name','$email','$mobile','$address')"); 

mysqli_close($con); 
//=============Data Insertion================= 


//=============Data Display================= 
$con=mysqli_connect("localhost","root","","employee_db"); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 


$result = mysqli_query($con,"SELECT 'employee_id' , 'employee_name' , 'employee_email' , 'employee_mobile' , 'employee_address' 
FROM 'employee_details' "); 

echo "<table border='1'> 
<tr> 
<th>Name</th> 
<th>Email</th> 
<th>Mobile</th> 
<th>Address</th> 
</tr>"; 

while($row = mysqli_fetch_array($result)) 
    { 
    echo "<tr>"; 
    echo "<td>" . $row['employee_name'] . "</td>"; 
    echo "<td>" . $row['employee_email'] . "</td>"; 
    echo "<td>" . $row['employee_mobile'] . "</td>"; 
    echo "<td>" . $row['employee_address'] . "</td>"; 
    echo "</tr>"; 
    } 
echo "</table>"; 

mysqli_close($con); 
//=============Data Display================= 

?> 
</body> 
</html> 

我要去哪里错了?可以做些什么来获得理想的输出?

回答

2

您选择的查询有单引号围绕列和表名称。您应该删除它们,或用反引号替换它们:

"SELECT `employee_id` , `employee_name` , `employee_email` , `employee_mobile` , 'employee_address' 
FROM `employee_details` " 

更新:感谢@bartfriederichs的指出引用与单引号select条款内容是不是无效的,因为查询将返回相同的数据通过。但引用带单引号的表名是无效的。

我的答案假定您需要表employee_details的列employee_id, employee_name, employee_email, employee_mobile, employee_address中的数据。

+0

列周围是不是无效的,它只是返回的值。桌子周围是。 –

+0

@BartFriederichs,是的,谢谢你抓到这句话。更新答案删除不正确的语句 – vee

2

这是不正确

$result = mysqli_query($con,"SELECT 'employee_id' , 'employee_name' , 'employee_email' , 'employee_mobile' , 'employee_address' 
FROM 'employee_details' "); 

应该

$result = mysqli_query($con,"SELECT `employee_id` , `employee_name` , `employee_email` , `employee_mobile` , `employee_address` 
FROM `employee_details` "); 
0

你的SELECT语句应该像this..Use backtick列名

$result = mysqli_query($con,"SELECT `employee_id` , `employee_name` , `employee_email` , `employee_mobile` , `employee_address` 
FROM `employee_details` "); 
0

嘿,你需要使用addslashes在你的插入变量中起作用,如

$name = addslashes($_POST["name"]); 
$email = addslashes($_POST["email"]); 
$mobile = addslashes($_POST["mobile"]); 
$address = addslashes($_POST["address"]); 

然后运行查询,

mysqli_query($con,"INSERT INTO employee_details (employee_name, employee_email, employee_mobile, employee_address) 
VALUES ('$name','$email','$mobile','$address')"); 
+0

添加addslashes()的坏主意。为什么不使用mysqli_real_escape_string() –

+0

嘿,这不是一个坏主意。我们应该在服务器端处理这些类型的东西,而不是在数据库中。 – Shivam

0
<html> 
<body> 
<?php 
$con = mysql_connect("localhost","root","") or die("mysql error"); 
     $db = mysql_select_db("employee_db",$con) or die ("problem in connecting database"); 
     ?> 
<?php 

$name = $_POST["name"]; 
$email = $_POST["email"]; 
$mobile = $_POST["mobile"]; 
$address = $_POST["address"]; 


$query =mysqli_query("INSERT INTO employee_details (employee_name, employee_email, employee_mobile, employee_address) 
VALUES ('$name','$email','$mobile','$address')"); 

?> 
<table> 
<thead> 
<tr> 
<th>Name</th> 
<th>Email</th> 
<th>Mobile</th> 
<th>Address</th> 
</tr> 
</thead> 

<tbody> 

<?php 
$sql ="SELECT 'employee_id' , 'employee_name' , 'employee_email' , 'employee_mobile' 'employee_address' 
FROM 'employee_details' "; 
       $runquery=mysql_query($sql); 
            $rows= mysql_num_rows($runquery); 

            if(is_resource($runquery) && $rows>0)  
         { 
            while($result= mysql_fetch_array($runquery)) 
          { 


            echo ' <tr>'; 
        echo '<td>'.$result['employee_name'].'</td>'; 
        echo '<td>'. $result['employee_email'].'</td>'; 
        echo '<td>'.$result['employee_mobile'].'</td>'; 
        echo '<td>'.$result['employee_address'].'</td></tr>'; 

          }} 
      ?>    
        </tbody> 
       </table> 

<?php mysqli_close($con);?> 
<!-- =============Data Display=================--> 

</body> 
</html>