【问题标题】:MySql Select query returning erroneous resultsMySql Select 查询返回错误结果
【发布时间】:2014-02-20 21:32:59
【问题描述】:

我创建了一个简单的 PHP 页面,它从 POST 请求中检索数据并将其保存在 MYSQL 数据库中。数据以正确的方式插入。现在,我想执行一个 Select 查询以从表中检索数据并将其显示在 UI 表中。 问题是 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', 'glenn@gmail.com','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>

我哪里出错了?可以做些什么来获得所需的输出?

【问题讨论】:

    标签: php mysql select


    【解决方案1】:

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

    "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 中的数据。

    【讨论】:

    • 周围的列不是无效的,它只会返回值。桌子周围是。
    • @BartFriederichs,是的,谢谢你看懂这句话。更新了答案,删除了不正确的陈述。
    【解决方案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` ");
    

    【讨论】:

      【解决方案3】:

      你的选择语句应该是这样的..使用backtick作为列名

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

      【讨论】:

        【解决方案4】:

        嘿,你需要像这样在插入变量中使用 addlashes 函数,

        $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')");
        

        【讨论】:

        • 添加addlashes()的坏主意..为什么不使用mysqli_real_escape_string()
        • 嘿,这不是个坏主意。我们应该在服务器端而不是在数据库中处理这些类型的事情。
        【解决方案5】:
        <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>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-11-07
          • 1970-01-01
          • 2021-02-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多