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()