所以我创建了一个数组,并使用foreach(在代码底部)将数组值放入一个表单中。
<html>
<script>
function showUser(str)
{
if (str == "") {
document.getElementById("txtHint").innerHTML = "";
return;
} else {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("txtHint").innerHTML = this.responseText;
}
};
xmlhttp.open("GET","gethint.php?q="+str,true);
xmlhttp.send();
}
}
</script>
<body>
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "my_database";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
//place Last Name in array
$sql="SELECT Lname FROM Customers";
$result=mysqli_query($conn,$sql);
$lnames=mysqli_fetch_all($result,MYSQLI_ASSOC);
mysqli_free_result($result);
foreach($lnames as $x) {
$a[] = $x['Lname'];
}
echo
"<select>";
foreach($a as $val => $option)
{
echo '<option value="'.$val.'">'.$option.'</option>';
}
"</select>";
?>
我想知道是否可以通过使用&#34; onchange&#34;来运行showUser函数。我尝试使用:
echo
"<select onchange="showUser(this.value)">";
foreach($a as $val => $option)
{
echo '<option value="'.$val.'">'.$option.'</option>';
}
"</select>";
但它表示有关于意外的showUser,语法错误,缺失的错误;要么 ,。我想允许用户选择一个选项,并加载相应的数据条目,但这不允许。
答案 0 :(得分:0)
在当前代码中尝试以下更正
mysqli_free_result($result); /* don't use `$lnames` here */
foreach($lnames as $x) { /* $x is row, can have multiple columns */
echo $x['Lname'],'<br/>'; /* use column name */
}
答案 1 :(得分:0)
当然,其他人多次询问您的问题,并且有很多答案。根据您编写代码的方式,我想借此机会帮助您了解一些您似乎缺少的概念。
$sql="SELECT Lname FROM Customers";
$result=mysqli_query($conn,$sql);
mysqli_query返回结果是一种常见的误解。更有经验的程序员有时会使用变量$ res,认为这是一个结果。实际上它是返回的记录集的游标或指针。因此,在某些文档中,变量$ rs而不是$ res。 (命名对机器无关紧要,但它们确实有助于您理解数据流。)
然后你写了这个:
$lnames=mysqli_fetch_all($result,MYSQLI_ASSOC);
此时,$ lnames包含结果的所有行。将它命名为$ record更好。您可以查看此变量的值:
echo '<pre>'; print_r($records); echo '</pre>';
如果要打印出每条记录的姓氏,请使用此循环:
foreach ($records as $record){
echo $record['Lname'].'<br>';
}
请注意大写的L,就像它在查询中的方式一样。
fetch_all也仅适用于mysqlnd包。你可能想要养成循环记录集的习惯:
while ($myrow=mysqli_fetch_assoc($rs)){
echo $myrow['Lname'].'<br>';
}