无法找到答案。当我点击提交一次时,我的自定义wordpress php代码似乎执行了两次。单击时,代码会添加两个具有相同名称的城市。正如你所看到的,我试图通过检查重复来避免这种情况,但它忽略了它...我尝试将html移动到一个函数,但也没有帮助。现在我的代码看起来很怪异,仍然没有解决方案。有什么新想法吗?
<?php get_header(); ?>
<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<?php
// Start the loop.
while ( have_posts() ) : the_post();
// Include the page content template.
get_template_part( 'template-parts/content', 'page' );
if ( comments_open() || get_comments_number() ) {
comments_template();
}
// End of the loop.
endwhile;
?>
</main><!-- .site-main -->
<?php
function showForm() {
echo "<form name='submit' method='post'>";
echo "<select name='countriesSelect'>
<option value='-1'>Choose...</option>";
$conn = new mysqli('localhost','a','b','c');
$query = "SELECT id,country_name FROM countries";
$result = $conn->query($query);
while($row = $result->fetch_assoc()) {
echo "<option value='" . $row['id'] . "'>" . $row['country_name'] . "</option>";
}
$conn->close();
echo "</select><br /><br />
Now choose a new city: <input type='text' name='cityname' maxlength='30' size='30' value='' style='width: 300px;' /><br /><br />
That is it: <br />
<input type='submit' value='Add new city' /><br /><br />
</form>";
return;
}
if (!empty($_POST['cityname']) && !empty($_POST['countriesSelect'])) {
$cityname = $_POST['cityname'];
$countriesSelect = $_POST['countriesSelect'];
// make sure city doesn't exist - also because for some unknown reason this script is called twice =/
$db = new mysqli('localhost','a','b','c');
$query = "SELECT city_name FROM cities WHERE city_name='$cityname'";
$result = $db->query($query);
$row = $result->fetch_assoc();
if (empty($row['city_name'])) {
// add new city
$query = "INSERT INTO cities (country_id, city_name, amount_raised_usd) VALUES ($countriesSelect, '$cityname', 0)";
$result = $db->query($query);
if ($db->query($query) === TRUE) {
echo "<div style='color: green;'>New city added successfully. Add another?";
} else {
echo "<div style='color: red;'>Error: " . $query . " :: " . $db->error;
}
echo '</div><br /><br />';
}
$db->close();
showForm();
} else {
showForm();
}
?>
<?php get_sidebar( 'content-bottom' ); ?>
</div><!-- .content-area -->
<?php get_footer(); ?>
答案 0 :(得分:2)
你看到了吗
$result = $db->query($query);
下一行:
if ($db->query($query) === TRUE) {
这意味着您运行查询两次。删除其中一个$db->query
,例如:
$result = $db->query($query);
if ($result === TRUE) { /* do stuff */
答案 1 :(得分:1)
你执行两次查询:
$result = $db->query($query);
if ($db->query($query) === TRUE) {
应该是:
$result = $db->query($query);
if ($result === TRUE) {