我是PDO的新手,非常新,我试图从多个网站(this)阅读文档,但我还是不完全理解它。
不过,我希望更新我在公司使用的内部网站,因为这个项目变得越来越重要,我想重写它以更好地塑造它。
我能够"转换":
<?php
$sql = "SELECT name FROM table order by name ASC";
$result1 = pg_query($conn, $sql);
while ($row = pg_fetch_row($result1)) {
echo "<option value='$row[0]'>$row[0]</option>";
}
?>
为:
<?php
$sql = "SELECT name FROM table order by name ASC";
$stmt_menu = $pdo->prepare($sql);
$stmt_menu -> execute();
foreach ($stmt_menu as $row){
echo "<option value=".$row['name'].">".$row['name']."</option>";
}
?>
即使我希望继续使用row[0]
以简化,但Apache的日志抱怨PHP Notice: Undefined offset: 0 in /var/www/pdo-test-website/left-menu.php on line 20
遵循其他教程(如this之一),我试图将当前的数据主义SQL替换为基于PDO的语句。
我之前:
<input type="text" list="test_list" class="form-control input-sm" name="test_name" id="test_name_id" />
<?php
echo '<datalist id="test_list">';
$test_name = pg_query("SELECT DISTINCT ON (FOO) FOO FROM table;");
while ($row = pg_fetch_row($test_name)) {
echo "<option value='$row[0]'>$row[0]</option>";
}
echo '</datalist>';
?>
现在:
<?php
$datalist_foo = "SELECT DISTINCT ON (:value) :value FROM table;";
$stmt_datalist = $pdo->prepare($datalist_foo);
echo '<datalist id="test_list">';
$stmt_datalist->execute(['value' => "FOO"]);
foreach ( $stmt_datalist as $row ) {
echo "<option value=".$row['FOO'].">".$row['FOO']."</option>";
}
echo '</datalist>';
?>
我正在尽力让它工作,但我一直在阅读Apache的错误日志文件中的错误。 我尝试在许多不同的版本中重写这个语句,如果我将日志文件粘贴到您的审阅中,那将不会那么有用,因为我还应该为每个错误行编写完整的PHP代码。
最后一个错误,即我在尝试上面发布的代码后得到的错误是:
PHP Notice: Undefined index: FOO in /var/www/pdo-test-website/datalist.php
我只想注意,非pdo版本有效,(测试)数据库里面有数据,我可以使用&#34; old&#34;来获取它们。 pg_query方法。
我希望你能给我一些建议,我也尝试过这个链接上的解决方案:returning multiple rows from postgre PDO但是我无法让它发挥作用。