我是一名PHP初学者,最近我的源代码出现了问题。
这是:
<html>
<head>
<title>
Bot
</title>
<link type="text/css" rel="stylesheet" href="main.css" />
</head>
<body>
<form action="bot.php "method="post">
<lable>You:<input type="text" name="intrebare"></lable>
<input type="submit" name="introdu" value="Send">
</form>
</body>
</html>
<?php
//error_reporting(E_ALL & ~E_NOTICE);
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("robo") or die(mysql_error());
$intrebare=$_POST['intrebare'];
$query = "SELECT * FROM dialog where intrebare like '%$intrebare%'";
$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_array($result) or die(mysql_error());
?>
<div id="history">
<?php
foreach($row as $rows){
echo "<b>The robot says: </b><br />";
echo $row['raspuns'];
}
?>
</div>
它将结果返回6次。
当我创建foreach
时出现了这个问题,因为我希望每次SQL查询后结果都会逐页停留在页面上。
你能告诉我这个问题到底是什么吗?谢谢!
答案 0 :(得分:4)
mysql_fetch_array
每次调用一行。你会想这样做:
while ($row = mysql_fetch_array($result)) {
echo "<b>The robot says:</b><br>";
echo htmlentities($row['raspuns']);
}
并摆脱第一个mysql_fetch_array
。
(注意我是HTML转义变量输出。除非你知道你在做什么,否则你不应该将原始数据输出到页面中。)
顺便说一下,mysql_query
实际上已被弃用。它根本不适用于新代码。看看mysqli(替代品)或PDO(新热度)。使用新的mysqli(objecty)接口,PHP部分看起来有点像这样:
<?php
//error_reporting(E_ALL & ~E_NOTICE);
$db = new mysqli('localhost', 'root', '', 'robo');
# turn into a wildcard
$intrebare='%' . $_POST['intrebare'] . '%';
$stmt = $db->prepare('SELECT * FROM dialog WHERE intrebare LIKE ?');
$stmt->bind_param('s', $intrebare);
$result = $stmt->execute();
echo '<div id="history">';
# 5.4 lets you do it like this;
# older versions, try `while ($row = $result->fetch_assoc())`
foreach ($result as $row) {
echo "<b>The robot says: </b><br />";
echo htmlentities($row['raspuns']);
}
?>
答案 1 :(得分:4)
你做错了。 ; - )
首先,你必须在这样的循环中使用mysql_fetch_array
获取结果:
while (true == ($row = mysql_fetch_array($result))) {
echo "<b>The robot says: </b><br />";
echo $row['raspuns'];
}
其次我想告诉你所有mysql_ *函数都被标记为已弃用。如果你想学习PHP,你应该尝试学习如何使用PDO连接到mysql。
答案 2 :(得分:3)
你正在尝试逆转:
<?php
while($row = mysql_fetch_array($result,MYSQL_ASSOC)){
echo '<strong>The robot says: </strong><br />', $row['raspuns'];
}
?>
立即尝试:)
答案 3 :(得分:3)
使用while获取所有数据并检查变量名称
while($row = mysql_fetch_array($result)){
echo "<b>The robot says: </b><br />";
echo $row['raspuns']; // Here
}
答案 4 :(得分:3)
您只获得一个结果(只有一次调用mysql_fetch_array())。我打赌,在对话框中有六列。
...
$result = mysql_query($query) or die(mysql_error());
?>
<div id="history">
<?php
while($row = mysql_fetch_array($result))
{
echo "<b>The robot says: </b><br />";
echo htmlentities($row['raspuns']);
}
?>
</div>
此外,不推荐使用mysql_ *函数。切换到mysqli_ *或PDO。