更新或插入数据库

时间:2014-05-27 13:55:29

标签: php mysql

如果我的查询结果为空,我想插入信息,否则我想更新信息。但是,我一直收到这个错误:

  

警告:mysql_num_rows()期望参数1是资源,在...中给出布尔值

$info = $_POST['info'];
$gebruiker = $_POST['gebruiker'];
$result = mysql_query("SELECT fysionummer FROM algemene_info WHERE = $gebruiker");

if (mysql_num_rows($result)==0) { 
    mysql_query("INSERT INTO algemene_info (`info_id`, `omschrijving`, `fysionummer`)
    VALUES (NULL, '$info', '$gebruiker')");
    //echo $response;
    echo "Het toevoegen van de algemene info is geslaagd!";
} else {
    mysql_query ("UPDATE algemene_info
SET omschrijving='$info'
    WHERE fysionummer='$gebruiker'");
    //echo $response;
echo "Het update van de algemene informatie is geslaagd!";
}

3 个答案:

答案 0 :(得分:1)

简答

你显然在这里缺少列名:

SELECT fysionummer FROM algemene_info WHERE = $gebruiker

应该是这样的:

SELECT `fysionummer` FROM `algemene_info` WHERE `COLUMN_NAME` = $gebruiker

长答案

请注意,mysql_*函数已弃用,通常不安全。您还可以从用户插入数据,而不会确保这不会破坏您的应用程序/数据库。滥用它并发布您自己的SQL代码而不是$_POST['element_name']非常容易。

我建议使用mysqli_*函数,因为它们对初学者来说很容易使用,而且更安全。您可以使用预备语句

示例:

$mysqli = new mysqli("localhost", "user", "password", "database");
$query = $mysqli->prepare("SELECT `fysionummer` FROM `algemene_info` WHERE `COLUMN_NAME` = ?");
$query->bind_param("s", $_POST['gebruiker']);
if($query->execute())
{
// success
// logic
}

答案 1 :(得分:1)

您的SQL Query不正确。

$result = mysql_query("SELECT fysionummer FROM algemene_info WHERE = $gebruiker");

WHERE WHAT = '$gebruiker' ??

纠正错误,它将解决您的初始问题。

答案 2 :(得分:1)

你的代码毫无意义。 where = $gebruiker

什么是$ gebruiker?

无论如何,请谷歌搜索ON DUPLICATE KEY UPDATE 这可能就是你所需要的。

您执行正常插入操作,并且在重复键重写时,它将执行更新。