为什么我的 php "if statement" 不影响我的 mysql 查询?

Why is my php "if statement" not affecting my mysql query?

首先,我知道 mysql 已被弃用。一旦我弄清楚手头的问题,就会更改为 mysqli。即使未在 'stripetoken' 列中设置数据,我的查询也会继续更新我的所有行。为什么会这样?

代码片段:

$token_query = 'SELECT * FROM jobsubmission';
$token_res = mysql_query($token_query);
$token_row = mysql_fetch_array($token_res);


if(isset($token_row['stripetoken'])) {
    $updqry = 'UPDATE jobsubmission SET assigned=1 WHERE ID="'.$book_ids[$jcount].'"';
    $update = mysql_query($updqry);
    $bookdate = date("d-m-Y");

因为 $token_row['stripetoken'] 总是 设置,因为它是您数据库中的一个列,因此它将在 $token_row 中可用。现在它是否有价值是另一回事了。您应该改用 empty()(假设您不希望它对虚假值为真)。

if(!empty($token_row['stripetoken'])) {

因此,虽然@JohnConde 说我需要在 isset 上使用空函数是完全正确的,但我的解决方案在其他地方。以下是我如何设法使查询符合我的规范:

  • 我没有搜索空的,而是将 'stripetoken' 列设置为 NULL 默认情况下。
  • 这让我可以使用以下代码:

    $token_query = 'SELECT * FROM jobsubmission WHERE ID="'.$book_ids
    [$jcount].'" and stripetoken is not null';
    $token_res = mysql_query($token_query);
    $token_row = mysql_fetch_object($token_res);
    
    if(!$token_row->stripetoken == NULL) {