我觉得这可能很简单,但却看不到它!
我已经构建了一个将结果保存到数据库表中的测试。目前,它为每次测试都节省了一排。可以进行测试,直到它通过。
目前它输出的每一个结果(因为它循环遍历表格中的每个结果)。
如果$row['testname'];
的输出为" Pass"?
$row['pass-fail'];
<?php $current_user = wp_get_current_user();
$user = $current_user->user_login;
require("database.php");
// Opens a connection to a MySQL server
$con = mysql_connect("localhost", $username, $password);
if (!$con) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("tester", $con);
$sql = mysql_query("SELECT * FROM test WHERE name='$user' ORDER BY Date DESC");
if (!$sql) {
die('Error: ' . mysql_error());
} ?>
<?php while($row = mysql_fetch_array($sql)) { ?>
<p><?php $testname = $row['testname']; echo get_the_title( $testname ); ?> - <?php echo $row['pass-fail']; ?></p>
<?php } ?>
<?php mysql_close($con); ?>
答案 0 :(得分:4)
在查询中使用WHERE子句仅选择pass-fail等于“Pass”的子句。另外,使用准备好的陈述。
$current_user = wp_get_current_user();
$user = $current_user->user_login;
require("database.php");
// Opens a connection to a MySQL server
$conn = new mysqli("localhost", $username, $password, "tester");
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$stmt = mysqli_prepare($conn, "SELECT * FROM `test` WHERE `name`=? AND `pass-fail`='Pass' ORDER BY `Date` DESC");
$stmt->bind_param("s", $user);
$stmt->execute();
$result = $stmt->get_result();
while($row = $result->fetch_assoc()) {
$testname_title = get_the_title($row['testname']);
echo "<p>{$testname_title}</p>";
}
$conn->close();
为此,您必须拥有the mysqlnd driver。
如果您没有这个,我建议PDO(IMO,一般来说也更容易使用) - 如果您需要帮助学习如何使用PDO进行安全可靠的查询,那么您可以查看this answer that I wrote,其中展示了我撰写的一项功能,该功能使Prepared Statements 轻松,清洁和安全。或者,您可以详细了解Prepared Statements for MySQLi