PHP的ExecuteNonQuery是一種非查詢語句執(zhí)行方式,它用來執(zhí)行腳本,例如插入、更新或者刪除數(shù)據(jù)等操作。ExecuteNonQuery方法的特點(diǎn)是在執(zhí)行完之后并不返回結(jié)果集,而是返回執(zhí)行命令所影響的記錄數(shù)。
下面我們用一個(gè)簡(jiǎn)單的例子來說明ExecuteNonQuery()的應(yīng)用:
$serverName = "localhost"; $username = "root"; $password = ""; $dbName = "test"; $conn = mysqli_connect($serverName, $username, $password, $dbName); if ($conn->connect_error) { die("連接失敗: " . $conn->connect_error); } $sql = "INSERT INTO `students`(`name`, `age`, `gender`, `score`) VALUES ('Tony', 20, 'male', 90)"; if ($conn->query($sql) === TRUE) { echo "添加成功"; } else { echo "Error: " . $sql . "
" . $conn->error; } $conn->close();
上述例子中,我們首先連接到本地?cái)?shù)據(jù)庫(kù),然后插入了一條學(xué)生記錄到students表中。通過判斷插入操作是否成功,我們可以看到ExecuteNonQuery()方法并不返回結(jié)果集。
未使用ExecuteNonQuery()時(shí)插入操作的代碼如下:
$result = $conn->query($sql); if ($result->num_rows >0) { while($row = $result->fetch_assoc()) { echo "id: " . $row["id"]. " - Name: " . $row["name"]. " " . $row["age"]. "
"; } } else { echo "0 結(jié)果"; } $conn->close();
執(zhí)行完以上代碼,可以看到ExecuteNonQuery()之后,我們不能通過$result獲取到任何結(jié)果集。
同時(shí),ExecuteNonQuery()也可以用于更新或刪除數(shù)據(jù)。下面我們來看一個(gè)更新操作的例子:
$serverName = "localhost"; $username = "root"; $password = ""; $dbName = "test"; $conn = mysqli_connect($serverName, $username, $password, $dbName); if ($conn->connect_error) { die("連接失敗: " . $conn->connect_error); } $sql = "UPDATE students SET gender='female' WHERE name='Tony'"; if ($conn->query($sql) === TRUE) { echo "更新成功"; } else { echo "Error: " . $sql . "
" . $conn->error; } $conn->close();
以上代碼中,我們更新了名為Tony的學(xué)生的性別字段,同樣地,ExecuteNonQuery()方法并不返回結(jié)果集。
到這里,我們就通過以上例子理解了ExecuteNonQuery()的作用和特點(diǎn)。需要注意的是,在使用ExecuteNonQuery()方法的時(shí)候,我們需要明確自己是否需要結(jié)果集,如果不需要的話,可以直接使用ExecuteNonQuery()方法處理操作,否則則需要使用ExecuteReader()或者ExecuteScalar()方法來獲取結(jié)果集。