php - php if 语句的奇怪问题

标签 php mysql if-statement

我想使用此页面来确定用户是更新了时事通讯还是创建了新时事通讯。它连接到数据库没有问题并且会更新,但我无法让它插入一个新的,因为它给我这个错误:

Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

如果我删除 if 语句并强制它插入一条新记录,它将正常工作。

如有任何建议,我们将不胜感激,谢谢。

<?php
$server = "localhost";
$username = "user";
$password = "****";
$database = "test";

$con = mysql_connect($server, $username, $password);

$title = $_POST["title"];
$body = $_POST["body"];
$transaction = "Record Added";

if (!$con)
{
    die('Could not connect: ' . mysql_error());
}

mysql_select_db($database, $con);

if(isset($_POST["id"]))
{
    $sql = "INSERT INTO newsletter (date, title, body)
    VALUES('1990-12-12', '$title', '$body')";       
}
else
{
    $id = $_POST["id"];
    $transaction = "Record Updated";
    $sql = "UPDATE newsletter SET title='".$title."', body='".$body."' WHERE newsletterId =".$id;   
}

if (!mysql_query($sql,$con))
{
    die('Error: ' . mysql_error());
}

echo $transaction;

mysql_close($con);
?>

最佳答案

您的逻辑似乎有缺陷,如果发布了 ID,您尝试插入,而当没有发布 ID 时,您尝试更新:

if(isset($_POST["id"]))
{
    $id = $_POST["id"];
    $transaction = "Record Updated";
    $sql = "UPDATE newsletter SET title='".$title."', body='".$body."' WHERE newsletterId =".$id;        
}
else
{
    $sql = "INSERT INTO newsletter (date, title, body)
    VALUES('1990-12-12', '$title', '$body')";   
}

这就是你的错误来源,你的 $id 是空的。

除此之外,您还应该研究一下 sql 注入(inject)。切换到准备好的语句是最好的方法。

关于php - php if 语句的奇怪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10215631/

相关文章:

php - 查询从多个表中获取数据 MySQL

php - POST 可以进行 SQL 注入(inject)吗?

php - 如何使用php和mysql创建视频上传和播放文件

php - 真正导致 PHP MySQL 库版本与您的 MySQL 服务器版本不同的原因是什么?

PHP:检查电子邮件是否包含 "@"和 "."

php - PHP5面向对象获取大量数据的正确方法

php - 为什么调用 __call 而不是 __callStatic

java - 如何使用该列中数值的平均值更新特定列的空单元格? (Mysql使用java)

Javascript条件隐藏/显示问题

javascript - 满足数值条件时发生一次火灾事件