-2

在下面的代码中使用 if (isset('prescription')) {'prescription'} 有困难:

$query = " 
    SELECT 
        id, 
        full_name,
        address,
        email,
        telephone,
        prescription
    FROM patients 
    WHERE id 
    LIKE '%" . $patient_id . "%'";

问题是,每当 php 从表字段中获取结果时,处方有时为空,有时带有信息。因此显示此通知:注意:未定义索引:

我发现的解决方案仅在表单输入上使用 isset 而不是来自表的数据。因此找到的示例包含 $_POST 或 $_GET ,它们对我不起作用。

干杯,伊恩

4

1 回答 1

0

我将在这里冒险并猜测您正在尝试从空结果集中读取一个值。你应该首先检查一个有效的结果。这是一个使用 PDO 的示例

$pdo = new PDO('mysql:host=localhost;dbname=yourdb;charset=utf8', 'username', 'password');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

// I've changed your query to remove the LIKE comparison
// Seemed incorrect for an ID lookup
$stmt = $pdo->prepare('SELECT
    id, full_name, address, email, telephone, prescription
    FROM patients WHERE id = ?');

$stmt->bindParam(1, $patient_id);
$stmt->execute();

$results = $stmt->fetchAll(PDO::FETCH_ASSOC);

// Check for any results
if (0 === count($results)) {
    throw new Exception('No results found');
}

foreach ($results as $result) : ?>

<dl>
    <dt>ID</dt>
    <dd><?= htmlspecialchars($result['id']) ?></dd>

    <dt>Full name</dt>
    <dd><?= htmlspecialchars($result['full_name']) ?></dd>

    <!-- and so on -->
</dl>

<?php endforeach ?>
于 2013-04-09T00:06:43.417 回答