[英]How can i do that mysqli query with PDO?
I am try to build with recursive function that show option menu categories doing indent. 我尝试使用递归函数进行构建,该函数显示执行缩进的选项菜单类别。 It is working perfect in mysqli query, but how can i do that in PDO query?
它在mysqli查询中运行完美,但是如何在PDO查询中做到这一点?
For any helps thanks. 对于任何帮助,谢谢。
I am changed some lines and i also changed correct database connection to PDO, but not worked. 我更改了一些行,还更改了与PDO的正确数据库连接,但没有用。
changed lines: 换行:
$dbc = $db->prepare("SELECT * FROM categories ORDER BY title");
$dbc->execute(array());
while (list($id, $parent_id, $category) = $dbc->fetchAll(PDO::FETCH_ASSOC)) {
My mysqli query need change to PDO: 我的mysqli查询需要更改为PDO:
$db = mysqli_connect("localhost","","","");
echo '<select name="parent_id">
<option value="">Select</option>';
function make_list ($parent,$depth) {
global $option;
foreach ($parent as $id => $cat) {
$whitespace = str_repeat(' - ', $depth * 1);
echo '<option value="' . $cat['id'] . '">'. $whitespace . $cat['category'] . '</option>';
if (isset($option[$id])) {
make_list($option[$id], $depth+1);
}
}
}
$dbc = mysqli_query($db, "SELECT * FROM categories ORDER BY title");
$option = array();
while (list($id, $parent_id, $category) = mysqli_fetch_array($dbc, MYSQLI_NUM)) {
$option[$parent_id][$id] = array('category' => $category, 'id' => $id, 'parent_id' => $parent_id);
}
make_list($option[0], $depth = 0);
echo '</select>';
Here error messages: 这里的错误信息:
Line 36 : foreach ($parent as $id => $cat) { 第36行:foreach($ parent作为$ id => $ cat){
Line 56: while (list($id, $parent_id, $category) = $dbc->fetchAll(PDO::FETCH_ASSOC)) { 第56行:while(list($ id,$ parent_id,$ category)= $ dbc-> fetchAll(PDO :: FETCH_ASSOC)){
Line 58: $option[$parent_id][$id] = array('category' => $category, 'id' => $id, 'parent_id' => $parent_id); 第58行:$ option [$ parent_id] [$ id] = array('category'=> $ category,'id'=> $ id,'parent_id'=> $ parent_id);
Line 61: make_list($option[0], $depth = 0); 第61行:make_list($ option [0],$ depth = 0);
<select name="parent_id">
<option value="">Select</option><br />
<b>Warning</b>: Illegal offset type in <b>/Users/test/Documents/functions/pdo-optionmenu.php</b> on line <b>58</b><br />
<br />
<b>Notice</b>: Undefined offset: 0 in <b>/Users/test/Documents/functions/pdo-optionmenu.php</b> on line <b>56</b><br />
<br />
<b>Notice</b>: Undefined offset: 1 in <b>/Users/test/Documents/functions/pdo-optionmenu.php</b> on line <b>56</b><br />
<br />
<b>Notice</b>: Undefined offset: 2 in <b>/Users/test/Documents/functions/pdo-optionmenu.php</b> on line <b>56</b><br />
<br />
<b>Notice</b>: Undefined offset: 0 in <b>/Users/test/Documents/functions/pdo-optionmenu.php</b> on line <b>61</b><br />
<br />
<b>Warning</b>: Invalid argument supplied for foreach() in <b>/Users/test/Documents/functions/pdo-optionmenu.php</b> on line <b>36</b><br />
</select>
As you have no insecure data in your query, there's no need to use prepare
, use simple query
function: 由于查询中没有不安全的数据,因此无需使用
prepare
,可以使用简单的query
功能:
$dbc = $db->query("SELECT * FROM categories ORDER BY title");
Next, fetchAll
fetches all results immediately. 接下来,
fetchAll
立即获取所有结果。 You need to fetch row by row. 您需要逐行获取。 In case of
query
, this can be done as 在
query
情况下,可以通过以下方式完成
foreach ($dbc as $row) {
print_r($row);
}
Or with fetch
method: 或使用
fetch
方法:
while ($row = $dbc->fetch()) {
print_r($row);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.