/ /更新クエリで動作しない場合-php、mysql、sql-update

更新クエリで動作しない場合-php、mysql、sql-update

if else条件に問題があります。すみません、私は初心者ですので、助けてください。私のコードは以下です。

$sql1=mysql_query("select * from dbms_master_data where id="".$_GET["eid"].""");

$rst1=mysql_fetch_array($sql1);
$new_user="Contact; ".$rst1["user_type"];
$sqls=mysql_query("update dbms_master_data set user_type="".$new_user."", cid="".$_GET["vid"]."" where id="".$_GET["eid"]."" and cid IS NULL");
if($sqls)
{
?>
<script>
alert("New contact added!");
window.location="access1.php?vid=1";
</script>
<?php
}
else
{
?>
<script>
alert("This contact is already assigned to another user!");
window.location="access1.php?vid=2";
</script>
<?php
}

条件が失敗しても、「新しい連絡先が追加されました」というメッセージが表示されます。理由を教えてください。

回答:

回答№1は0

つかいます mysql_num_rows()。影響を受ける行の数を確認するために使用されます

$sqls=mysql_query("update dbms_master_data set user_type="".$new_user."", cid="".$_GET["vid"]."" where id="".$_GET["eid"]."" and cid IS NULL");

$row=mysql_num_rows($sqls);
if($row>0)
{
?>
<script>
alert("New contact added!");
window.location="access1.php?vid=1";
</script>
<?php
}
else
{
?>
<script>
alert("This contact is already assigned to another user!");
window.location="access1.php?vid=2";
</script>
<?php
}

回答№2の場合は0

あなたの状態は間違っています

mysql_query()応答はリソースIDを返すため、if($ sqls)は常にtrueを返します。


回答№3の場合は0

上記のようにif(mysql_num_rows($ sqls)> 0){を使用しますが、PDOの使用を検討すると、PHPはmysql_queryを推奨しなくなります。

また、データベースに入っているものをすべてエスケープしてください。そうしないと、人々は簡単に物を注入できます。例(クエリのコンテキスト内):

$sql1=mysql_query("select * from dbms_master_data where id=".(int)$_GET["eid"]);

$rst1=mysql_fetch_array($sql1);
$new_user="Contact; ".$rst1["user_type"];
$sqls=mysql_query("update dbms_master_data set user_type="".mysql_real_escape_string($new_user)."", cid=".(int)$_GET["vid"]." where id=".(int)$_GET["eid"]." and cid IS NULL");

回答№4の場合は0

更新されているかどうかを確認する必要があります。 使ってください

mysql_affected_rows()