mysqli更新没有更新,虽然没有错误

时间:2013-10-01 15:03:07

标签: php mysqli sql-update

我正在尝试调整我在SELECT中工作的代码来执行更新。这里没有错误,但它不会更新任何内容,甚至不会进入循环。它应该更新所选日期的房间类型($value)。

我回应所有值来检查它们并且它们是正确的。

$bdd = mysqli_connect('localhost', 'root', '', 'webpage')
$roomty = 1;                                                                                        
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
}

foreach ($_SESSION['datesBooked_1_month'] as $key => $value)
{
    $stmt = mysqli_stmt_init($bdd);
    if ( mysqli_stmt_prepare( $stmt , "UPDATE '".$_SESSION['tab_from_month_year']."'
SET '".$_SESSION['roomtype_x']."'='".$_SESSION['roomtype_x']."' + ? WHERE day = ?"))
    {
        mysqli_stmt_bind_param( $stmt ,'is', $roomty , $value );
        mysqli_stmt_execute( $stmt );
        mysqli_stmt_close($stmt);
        echo " Booked !<br /> "; 
    }           
}

3 个答案:

答案 0 :(得分:0)

请使用PHP的新MySql驱动程序尝试以下代码。

  • 你把引号换成整数值,这是错误的
  • 你用数字命名列吗?那不舒服。
  • 您确定 $ value 是字符串吗?
  • 为什么使用 $ key =&gt; foreach 循环中的$ value

这里是代码:

/* Connect to an ODBC database using driver invocation */
$dsn = 'mysql:dbname=webpage;host=127.0.0.1';
$user = 'root';
$password = 'dbpass'; #put here yor password

try {
    $dbh = new PDO($dsn, $user, $password);
    } catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
    }

foreach $_SESSION['datesBooked_1_month'] as  $value) {
    #I hope that following variables don't contain space
    $query = "UPDATE " .$_SESSION['tab_from_month_year']; 
    $temp = $_SESSION['roomtype_x'] + $roomty ;
    #you wrote that $value is a string, are you sure?
    $query .= " SET ".$_SESSION['roomtype_x']. "=$temp WHERE day='$value'"   ;
    $dbh->query($query);
    }

答案 1 :(得分:-1)

我发现问题是双引号之前的单引号。它似乎只能用这样的双引号很好地工作:

if ( mysqli_stmt_prepare( $stmt ,  "UPDATE ".$_SESSION['tab_from_month_year']." SET  ".$_SESSION['roomtype_x']." = ".$_SESSION['roomtype_x']." + ?  WHERE  day = ?"))

答案 2 :(得分:-2)

如果这是您需要选择数据库的完整代码,则当前该语句将被发送到服务器但不会发送到任何数据库,因此您不会收到任何错误。你应该使用:

mysqli_select_db("You database goes here");