【问题标题】:Blank Page with PHP script带有 PHP 脚本的空白页
【发布时间】:2014-04-14 15:36:42
【问题描述】:

我试图从表单中获取输入并删除表数据,然后显示更新后的表,但我得到一个空白页,我不知道可能是什么问题,任何帮助都会得到这里是我的代码:

  <html>
        <body>
<?php
 $mysqli = new mysqli("xxxxx", "xxxxxx", "xxxxx", "xxxxxx");

 /* check connection */ 
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}
 //----------------------------------------------------------------------------------//
$name = $_POST['Car_ID'];

if ($stmt = $mysqli->prepare("delete from CARS where name=?")) {

    // Bind the variable to the parameter as a string. 
    $stmt->bind_param("s", $name);

    // Execute the statement.
    $stmt->execute();

 echo "Deleted data successfully\n";

    // Close the prepared statement.


  $mysqli->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $result = $db->prepare("SELECT id, Doors, TRANSMISSION, Fuel_type, Engine_Size, Total FROM CARS");
        $result->execute();
        while ($row = $result->fetch(PDO::FETCH_ASSOC)){
            $doors=$row["Doors"];
            $engine=$row["Engine_Size"];
            $total=$row["Total"];
            $trans=$row["Transmission"];
            }
         ?>

        <table>
        <tr>
        <td><?php echo $doors; ?></td>
        <td><?php echo $engine; ?></td>
        <td><?php echo $total; ?></td>
        <td><?php echo $trans; ?></td>

        </tr>
  <?php } ?>
        </table>
        </body>
        </html>

【问题讨论】:

  • }?&gt;} ?&gt; 隔开,并确保您的表单元素已命名。即:name="Car_ID"
  • 等一下...您正在将 mysqli_* 与 PDO $mysqli-&gt;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 混合使用

标签: php pdo mysqli


【解决方案1】:

您正在将mysqli 与 PDO 混合

$mysqli->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

你正在传递$db理论上)应该是$mysqli

$result = $db->prepare("SELECT id, Doors, TRANSMISSION, Fuel_type, Engine_Size, Total, DATE_INITIATED, AGE, PARTNO, QTY, DESCRIPTION, LOC  FROM CARS");

理论上应该在哪里

$result = $mysqli->prepare("SELECT id, Doors, TRANSMISSION, Fuel_type, Engine_Size, Total, DATE_INITIATED, AGE, PARTNO, QTY, DESCRIPTION, LOC  FROM CARS");

因为您的数据库连接是:

$mysqli = new mysqli("xxxxx", "xxxxxx", "xxxxx", "xxxxxx");

但是,您的数据库连接应该类似于:

$mysql_hostname = 'xxx';
$mysql_username = 'xxx';
$mysql_password = 'xxx';
$mysql_dbname = 'xxx';

$db = new PDO("mysql:host=$mysql_hostname;dbname=$mysql_dbname", $mysql_username, $mysql_password);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

你不能这样做:

$stmt->bind_param("s", $name);

还记得您使用的是 PDO 吗? (你是吗?)随便挑吧,是 mysqli 还是 PDO?


您很可能想要这样做:

// $stmt = $db->prepare("delete from CARS where name=:value");

if ($stmt = $db->prepare("delete from CARS where name=:value")) {    
// Bind variables to your statement
$stmt->bindParam(':value', $name);

... }

【讨论】:

  • 谢谢,我理解我的错误,我现在就试试修改
  • 谢谢@ShankarDamodaran ;-)
【解决方案2】:

您是否启用了 error_reporting?

error_reporting(E_ALL);
ini_set("display_errors","on");

将此添加到您的 PHP 文件的头部。

【讨论】:

  • 那么这应该不是问题。缺少开头,打开 html + 正文的位置,您可以将其编辑到您之前的帖子中吗?
  • 是的,它只是 php 之前的 html 和 body 的开始标签,但我现在会编辑它
【解决方案3】:

太好了points made by @fred,当您最终决定要使用哪些数据库扩展时, 您仍然需要修复输出表格数据的方式,您应该将表格标签放在循环之外,并且 您应该在循环内打印表格行,注意额外的大括号。

这样的事情会起作用:

<html>
<body>
    <table>
<?php

   //Fetch your data
   //.....
   //....
    while ($row = $result->fetch(PDO::FETCH_ASSOC)){
    echo"<tr>
            <td>$row['Doors']</td>
            <td>$row['Engine_Size']</td>
            <td>$row['Total']</td>
            <td>$row['Transmission']</td>
        </tr>";
    }


?>
    </table>
</body>
</html>

【讨论】:

  • 感谢您的提及。只是一个简短的说明:你需要修复你的报价。从echo "echo ' 等或将["Doors"] 更改为['Doors'] 等。SO 的语法高亮从不说谎;-)
  • 是的,重要的是小事 ;-) 让我们希望 OP 的问题能够得到解决。
猜你喜欢
  • 1970-01-01
  • 2023-03-03
  • 2011-01-09
  • 1970-01-01
  • 2014-02-26
  • 1970-01-01
  • 2013-06-15
  • 1970-01-01
  • 2017-07-21
相关资源
最近更新 更多